JSP:Java Server Page
JSP可以接受请求、返回响应、本质就是Servlet
JSP-工作文件 tomcat 中 work文件夹
**原理**:JSP运行之前,在第一次访问文件时翻译成java代码 (**面试**)
xx.jsp - > xx_jsp.java
简介继承HttpServlet,JSp本质就是Servlet
**java脚本:**
<html> -> out.write()
<% %> -> 翻译后,出现在service方法中
<%=%> ->out.print()
<%!%> ->成员变量
–
注释:html注释 > java注释 > jsp注释
html注释:出现在 jsp代码、翻译后的java代码、html页面源码
// java注释:jsp代码、翻译后的java代码
<%-- --%> jsp注释:jsp代码
jsp包含:html标签、css、jss、3种脚本、3种注释、<%@ %>JSP指令
JSP内置对象、JSP动态标签、EL表达式、JSTL标签
--
**JSP指令<%@ %>:**
page:(属性最多)
language:JSP脚本可以嵌入的语言种类
pageEncoding:当前JSp文件的本身编码--内部可以包含contentType
contentType:response.setContentType("text/html;charset=UTF-8");
session:是否JSP在翻译是自动创建session
import:导入java包
errorPage:当前页面出错后,跳转到哪一个页面
isErrorPage:当前页面是否为一个处理错误的页面
include:
页面包含指令,可以将一个JSP页面吧Phan在另一个JSp页面中
格式:<%@ include file="被包含的文件地址"%>
taglib:
在JSP页面引入标签库(jstl\struts2标签库)
格式:<%@ taglib uri="标签库地址" prefix="前缀"%>
**JSP内置对象(9个) 笔试:**
out:
类型:javax.servlet.jsp.JspWriter
描述:用于页面输出
request:
类型:javax.servlet.http.HttpServletRequest
描述:得到用户请求信息
response:
类型:javax.servlet.http.HttpServletResponse
描述:服务器向客户端的回应信息
config:
类型:javax.servlet.ServletConfig
描述:服务器排至,可以取得初始化参数
session:
类型:javax.servlet.http.HttpSession
描述:用来保存用户的信息
application
类型:javax.servlet.ServletContext
描述:所有用户的共享信息
page
类型:java.lang.Object
描述:指当前页面转换后的Servlet类的实例
**pageContext:
类型:javax.servlet.jsp.PageContext
描述:JSP的页面容器**
exception
类型:java.lang.Throwable
描述:表示JSp页面所发生的异常,在错误页才起作用
**pageContext对象:**
一.pageContext是一个域对象
1.setAttribute(String name,Object obj);
2.getAttribute(String name,Object obj);
3.removeAttribute(String name)
二.pageContext可以向指定的其他域中存数据
1.setAttribute(String name,Object,int scope);
2.getAttribute(String name,int scope);
3.removeAttribute(String);
4.fingArrtibute(Strina name);
依次从pageContext域,request域,session域,application域中获取属性
在某个域获取后,不再向后寻找
PageContext.APPLICATION_SCOPE
PageContext.SESSION_SCOPE
PageContext.REQUEST_SCOPE
三.可以获得其他8个内置对象
例如:pageContext.getRequest();
**四大作用域的总结**
page域:当前JSP页面范围
request域:一次请求
session域:一次对话
application域:整个web应用
JSP标签:
<jsp:include page="被包含的页面">; 页面包含,动态
<jsp:forward page="要转发的资源">;请求转发
EL表达式:
概述:
EL表达式可以嵌入JSP页面内部,减少JSP脚本的编写,EL出现的目的是要替换JSP页面中脚本的编写
EL从域中读取数据:
JSP脚本:<%=request.getAttribute(name)%>
EL表达式替换上面的脚本:${requestScope.name}
**EL最主要的作用是获得四大域中的数据格式:** ${EL表达式}
EL获得pageSontext域中的值:${pageScope.key};
EL获得request域中的值:${requestScope.key};
EL获得session域中的值: ${sessionScope.key};
EL获得application域中的值:${applicationScope.key};
依次从pageContext域、request域、session域、application域中获得属性,在某个域中获取后将不再向后寻找。
EL执行表达式:
${1+1}; ${emp user}; ${user==null?true:false };
JSTL:
Core标签库:
导库:<%@ taglib uri="http:java.sun.com/jsp/jstl/core" prefix="c"%>
JSTL核心库的常用标签:
<c:if test="">
其中test是返回boolean的条件
<c:forEach>
<c:forEach begin="0" end="5" var"i">
${i}</br>
</c:forEach> 相当于 (for int i=0;i<5;i++){System.out.println(i)}
--
<c:forEach items="${map}" var="entry">
${entry.value/entry.key}<br>
</c:forEach>
–
out缓冲区
动态包含和静态包含
JSP原理