JSP脚本中包含9个内置对象,这9个内置对象都是Servlet API接口的实例,只是JSP规范对他们进行了默认初始化,所以,他们已经是对象,可以直接调用。以下是9个内置对象的详细说明。
- application: javax.servlet.ServletContext 的实例,该实例代表JSP 所属的Web 应用本身,可用于JSP 页面,或者在Servlet 之间交换信息。常用的方法有getAttribute(String a忧ame)、setA忧ibute(String attName , String attValue)和getlnitParameter(String paramName )等。
- config: javax.servlet.ServletConfig 的实例, 该实例代表该SP 的配置信息。常用的方法有getlnitParameter(String paramName )和getlnitParameternames()等方法。事实上, JSP 页面通常无须配置,也就不存在配置信息。因此,该对象更多地在Servlet 中有效。
- exception: java . lang.Throwable 的实例,该实例代表其他页面中的异常和错误。只有当页面是错误处理页面,即编译指令page 的isErrorPage 属性为rue 时,该对象才可以使用。常用的方法有getMessage ()和printStackTrace()等。
- out: javax.servlet.jsp.JspWriter 的实例,该实例代表JSP 页面的输出流,用于输出内容,形成HTML 页面。
- page : 代表该页面本身,通常没有太大用处。也就是Servlet 中的this , 其类型就是生成的Servlet 类,能用page 的地方就可用this 。
- pageContext: javax.servlet.jsp.PageContext 的实例,该对象代表该SP 页面上下文,使用该对象可以访问页面中的共享数据。常用的方法有getServletcontext()和getServletConfig()等。
- request: javax.servlet.http. HttpServletRequest 的实例,该对象封装了一次请求, 客户端的请求参数都被封装在该对象里。这是一个常用的对象,获取客户端请求参数必须使用该对象。常用的方法有getParameter(String paramName)、getParameterValues(String paramName)、setAttribute(String attrName,Object attrValue) 、getAttribute(String attrName) 和setCharacterEncoding(String env)等。
- response: javax.servlet.http. HttpServletResponse 的实例,代表服务器对客户端的响应。通常很少使用该对象直接响应,而是使用out 对象,除非需要生成非字符响应。而response对象常用于重定向,常用的方法有getOutputStream()、sendRedirect(java.lang . String.location )等。
- session: javax.servlet. http. HttpSession 的实例,该对象代表一次会话。当客户端浏览器与站点建立连接时,会话开始: 当客户端关闭浏览器时,会话结束。常用的方法有:getAttribute(String attrName )、setAttribute(String attrName, Object attrValue)等。
下面是代码实例:
//用于响应用户请求的方法
public void _jspService( HttpServletRequest request, HttpServletResponse response)
throws java.io.IOException,Exception {
PageContext pageContext = null;
HttpSession session = null;
ServletContext application = null ;
ServletConfig config = null;
JspWriter out = null;
Object page = this;
JspWriter _jspx_out = null;
PageContext _jspx_page_context = null;
try {
response.setContentType ("text/html; charset=gb2312") ;
paqeContext =_jspxFactory.getPageContext(this, request, response,
null, true, 8192, true);
_jspx_page_context = pageContext;
application = paqeContext.getServletContext();
...}
}
几乎所有的JSP 页面编译后Servlet 类都有如上所示的结构,上面Servlet 类的粗体字代码表明:request 、response 两个对象是_jspService()方法的形参, 当Tomcat 调用该方法时会初始化这两个对象。而page 、pageContext、application 、config 、session 、out 都是_jspServic()方法的局部变量,由该方法完成初始化。通过上面的代码不难发现JSP内置对象的实质: 它们要么是_jspService()方法的形参,要么是_jspService()方法的局部变量,所以我们可以直接调用这些对象,无须创建它们。