jsp隐含对象

来源:互联网 发布:怪物猎人XX数据库安卓 编辑:程序博客网 时间:2024/05/24 02:36

在JSP容器生成的Servlet类的_jspServlet()方法中,定义了几个对象,而这些对象就是我们在编写JSP页面时,可以使用的隐含对象。

注意:只能在脚本段和表达式中使用这些对象。

   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;

在JSP页面中,总共有9个隐含对象,与它们各自的类型如下表:
这里写图片描述

1、pageContext对象
该对象提供了访问其他隐含对象的方法。

<%      pageContext.getRequest();      pageContext.getResponse();      pageContext.getServletConfig();      pageContext.getSession();      pageContext.getOut();      pageContext.getServletContext();  %>

在pageContext对象中,可以使用下面两个方法来保存和获取属性:(在pageContext对象中保存的属性,只能在当前页面中去获取)

      pageContext.setAttribute(String,Object);      pageContext.getAttribute(String);

可以以得到其他范围对象中保存的属性:

      pageContext.setAttribute(String,Object,int scope);      pageContext.getAttribute(String,int scope);

pageConext对象提供了请求转发的两个方法forward()和include()方法,其内部实现是调用RequestDispatcher对象的forward和include()方法:

     pageContext.include("");      pageContext.forward("");

2、out对象
out对象的类型是JspWriter,该类是从Writer类派生的,以字符流的形式输出数据。out对象实际上是PrintWriter对象的带缓冲的版本,内部使用PrintWriter对象来输出数据。可以通过page指令的buffer属性来调整缓冲区的大小,默认是8kb。

      out.print("");      out.println();      out.clear();      out.clearBuffer();      //不需要显式去调用close()方法,JSP容器所生成的代码中会自动包含对close()方法的调用      out.close();

3、exception对象
该对象表示了JSP页面运行时产生的异常,该对象只有在错误页面(page指令中指定属性isErrorPage=true的页面)中才可以使用。

<%@ page contentType="text/html;charset=UTF-8" language="java" isErrorPage="true"  %><%    exception.toString();      exception.printStackTrace();      exception.getMessage(); %>

对象和范围
在JSP页面中的对象,包括用户创建的对象和JSP隐含对象都有一个属性范围。
1、page范围
在这个范围内的对象,只能在创建对象的页面中访问。pageContext对象本身属于page范围。可以利用该对象的setAttribute()方法将其他范围内的对象保存为page范围。也可以使用getAttribute()方法来访问具有这种范围类型的对象。

当Servlet类的_jspService()方法执行完毕,属于page范围的对象的引用将被丢弃。page范围内的对象,在客户端每次请求JSP页面时创建,在页面向客户端发送回响应或请求被转发(forward)到其他的资源后被删除。

2、request范围
可以调用request隐含对象的getAttribute()方法来访问具有这种范围类型的对象,可以调用setAttribute()方法将对象保存到request范围中。
在调用forward()方法转向的页面或调用include()方法包含的页面中,都可以访问这个范围内的对象。对于每一个新的请求,都要重新创建和删除这个范围内的对象。

3、session范围
调用session隐含对象的getAttribute()方法来访问具有这种范围类型的对象,也可以调用setAttribute()方法将对象保存到session范围中。
JSP容器为每一次会话,创建一个HttpSession对象,在会话期间,可以访问session范围内的对象。

4、application范围
调用application隐含对象的getAttribute()方法来访问具有这种范围类型的对象,也可以调用setAttribute()方法将对象保存到application范围中。
在Wbe应用程序运行期间,所有的页面都可以访问在这个范围内的对象。

原创粉丝点击