JSP实质上是Servlet的前端表现形式,更便于各类标签的书写。JSP中有默认的九个内置对象,
JSP内置对象引用名称 | 对应类型 |
request | HttpServletRequest |
response | HttpServletResponse |
session | HttpSession(有开关的:page指令的session属性取值) |
application | ServletContext |
config | ServletConfig |
page | this(当前Servlet对象) |
exception | java.lang.throwable(有开关:isErrorPage属性改为true) |
out | JspWrite |
pageContext | javax.Servlet.jsp.PageContext(非常重要) |
pageContext三大作用:
1.本身是一个域对象。同时还能操作其他三个域对象(ServletRequest ServletSession ServletContext)
本身表示的域范围是本页面:
void setAttribute(String name ,object value)
void removeAttribute(String name)
Object getAttribute(String name)
操作其他三个域对象
void setAttribute(String name,Object value,int scope)
void removeAttribute(String name,int scope)
Object getAttribute(String name, int scope);
其中传入参数 int scope是由PageContext类提供的静态变量规定.
PageContext.PAGE_SCOPE:页面范围(是PageContext本身中的那个Map,代号page,另外一个页面无效)
PageContext.REQUEST_SCOPE:请求范围(是ServletrRequest中的那个Map,代号request,一次请求之后无效)
PageContext.SESSION_SCOPE:会话范围(是ServletrSession中的那个Map,代号request,重新打开客户端之后无效)
PageContext.APPLICATION_SCOPE:应用范围(是ServletrContext中的那个Map,代号request,服务器重启之后无效)
(非常有用)Object findAttrinbute(String name):依次按照page request session application范围搜索指定名称的对象,找到为止。
2、获取其他8个隐式对象
3、提供了转发和包含的方便方法
RequestDispatcher rd = request.getRequestDispatcher("url");
rd.forward(request,response);
pageContext.forward("url");
pageContext.include("url");