out隐式对象、pageContext对象

来源:互联网 发布:ppt软件为什么打不开 编辑:程序博客网 时间:2024/05/16 08:59

一、out隐式对象

1、在JSP页面中应使用out隐式对象来向客户端发送文本形式的实体内容。 

2、out对象是通过调用pageContext对象的getOut方法返回的,其作用和用法与ServletResponse.getWriter方法返回的PrintWriter对象非常相似。 
3、JSP页面中的out隐式对象的类型为JspWriter,JspWriter相当于一种带缓存功能的PrintWriter,设置JSP页面的page指令的buffer属性可以调整它的缓存大小,甚至关闭它的缓存。 
4、JSP页面中的out隐式对象相当于插入到ServletResponse.getWriter方法返回的PrintWriter对象前面的缓冲包装类对象。
5、只有向out对象中写入了内容,且满足如下任何一个条件时,out对象才去调用ServletResponse.getWriter方法,并通过该方法返回的PrintWriter对象将out对象的缓冲区中的内容真正写入到Servlet引擎提供的缓冲区中:
            (1) 、设置page指令的buffer属性关闭了out对象的缓存功能
            (2) 、写入到out对象中的内容充满了out对象的缓冲区

            (3)、整个JSP页面结束

二、pageContext对象

1、pageContext对象是javax.servlet.jsp.PageContext类的实例对象,javax.servlet.jsp.PageContext类是javax.servlet.jsp.JspContext的子类

2、获得其他隐式对象

getException方法返回exception隐式对象 
getPage方法返回page隐式对象
getRequest方法返回request隐式对象 
getResponse方法返回response隐式对象 
getServletConfig方法返回config隐式对象
getServletContext方法返回application隐式对象
getSession方法返回session隐式对象 
getOut方法返回out隐式对象 

3、引入和跳转到其他资源

PageContext类中定义了一个forward方法和两个include方法来分别简化和替代RequestDispatcher.forward方法和RequestDispatcher.include方法的调用

传递给这些方法的资源路径都只能是相对路径,如果路径以“/”开头,表示相对于当前WEB应用程序的根目录,否则,表示相对于当前JSP所映射到的访问路径

4、访问各个域范围中的属性

在application、session、request、pageContext对象中都可以调用setAttribute方法和getAttribute方法来设置和检索各自域范围内的属性。
存储在application对象中的属性可以被同一个WEB应用程序中的所有Servlet和JSP页面访问。
存储在session对象中的属性可以被属于同一个会话的所有Servlet和JSP页面访问。
存储在request对象中的属性可以被属于同一个请求的所有Servlet和JSP页面访问,例如使用PageContext.forward和PageContext.include方法连接起来的多个Servlet和JSP页面。    
存储在pageContext对象中的属性仅可以被当前JSP页面的当前响应过程中调用的各个组件访问,例如,正在响应当前请求的JSP页面和它调用的各个自定义标签类。 
PageContext类中还提供了对各个域范围的属性进行统一管理的方法,以简化对各个域范围内的属性的访问。 

5、pushBody与popBody方法

PageContext类中有一对pushBody和popBody方法来管理嵌套的JspWriter流,以便支持扩展标签的功能。 
PageContext对象内部使用一个“out”属性来指向一个JspWriter对象,PageContext.getOut()方法的返回值就是“out”属性所指向的JspWriter对象,在第一次调用pushBody方法前,“out”属性指向JSP页面的隐式out对象。 
pushBody方法用于返回一个新产生的BodyContent对象,并让PageContext对象中的“out”属性指向这个新产生的BodyContent对象和将“out”属性原来指向的JspWriter对象保存起来,此后的PageContext.getOut()方法返回的结果将是pushBody方法内产生的那个BodyContent对象。 
BodyContent是JspWriter的一个子类,它提供了比JspWriter更多的功能,例如将写入到它里面的内容转换成一个字符串、清空写入到它里面的内容和将它里面的内容写入到另外一个JspWriter对象中。 
对于每一个pushBody方法调用,最后都要调用一个对应的popBody方法来恢复pushBody方法调用前的状态,popBody方法将PageContext对象中的“out”属性重新指向上次的pushBody方法保存起来的JspWriter对象,并返回这个JspWriter对象。 
JSP开发人员通常不必调用pushBody与popBody方法,而是由JSP引擎将JSP页面翻译成Servlet源程序时生成调用这两个方法的代码。 

原创粉丝点击