JSP的九个隐式对象
一.JSP到Java源码的表现
//_jspService方法,相当于Servlet里的service,用来处理请求 public void _jspService(final javax.servlet.http.HttpServletRequest request, final javax.servlet.http.HttpServletResponse response) throws java.io.IOException, javax.servlet.ServletException { if (!javax.servlet.DispatcherType.ERROR.equals(request.getDispatcherType())) { final java.lang.String _jspx_method = request.getMethod(); if ("OPTIONS".equals(_jspx_method)) { response.setHeader("Allow","GET, HEAD, POST, OPTIONS"); return; } if (!"GET".equals(_jspx_method) && !"POST".equals(_jspx_method) && !"HEAD".equals(_jspx_method)) { response.setHeader("Allow","GET, HEAD, POST, OPTIONS"); response.sendError(HttpServletResponse.SC_METHOD_NOT_ALLOWED, "JSP 只允许 GET、POST 或 HEAD。Jasper 还允许 OPTIONS"); return; } } //隐式对象 final javax.servlet.jsp.PageContext pageContext; javax.servlet.http.HttpSession session = null; final javax.servlet.ServletContext application; final javax.servlet.ServletConfig config; javax.servlet.jsp.JspWriter out = null; final java.lang.Object page = this; javax.servlet.jsp.JspWriter _jspx_out = null; javax.servlet.jsp.PageContext _jspx_page_context = null;
二.隐式对象
1.request
HttpServletRequest 类的实例,请求对象,提供一系列方法获取其中的请求信息
2.response
HttpServletResponse类的实例,服务器创建请求对象时同时创建了响应对象
3.pageContext
PageContext 类的实例,提供对JSP页面所有对象以及命名空间的访问,数据访问作用域仅在当前页面
4.seesion
HttpSession 类的实例,和Servlet中的session对象有一样的行为,可用于会话跟踪,session的使用也跟cookie有很大的关系。一般来说,只要浏览器不关闭,cookie就会一直生效,cookie生效,session的使用就不会受到影响。即作用域与用户相关
5.application
ServletContext 类的实例,相当于代表了JSP整个生命周期,数据的作用域表现为全局的
6.config
ServletConfig 类的实例,可以访问JSP引擎的初始化参数
7.out
JspWriter 类的实例,用来在response对象中写入内容(out.print,out.println)
8.page
相当于this,指代当前页面的实例
9.exception
页面必须是error页面 ,在JSP指令中使用page的isErrorPage="true",包装了从先前页面中抛出的异常信息。它通常被用来产生对出错条件的适当响应