JavaWeb学习篇之----Jsp详解(四)

2014-11-23 23:22:19 · 作者: · 浏览: 3
识点。

request
response
config
application
exception
Session
page
out
pageContext


request:HttpServletRequest
response:HttpServletResponse
session: HttpSession
application: servletContext
config:servletConfig
out:JspWriter
exception
page:this
pageContext

上面其实很多对象我们都接触过了,之前介绍servlet的时候都介绍过了,关于那个exception是个异常对象,只有当我们的Jsp页面中抛出异常的时候,才会有这个对象的产生,否则是不会传递这个对象的,至于page对象,这个很简单就是当前对象,即jsp翻译后的servlet对象,那么下面就来详细解释一下out对象和pageContext对象了。
out隐式对象用于向客户端发送文本数据。
out对象是通过调用pageContext对象的getOut方法返回的,其作用和用法与ServletResponse.getWriter方法返回的PrintWriter对象非常相似。
JSP页面中的out隐式对象的类型为JspWriter,JspWriter相当于一种带缓存功能的PrintWriter,设置JSP页面的page指令的buffer属性可以调整它的缓存大小,甚至可以关闭它的缓存。
只有向out对象中写入了内容,且满足如下任何一个条件时,out对象才去调用ServletResponse.getWriter方法,并通过该方法返回的PrintWriter对象将out对象的缓冲区中的内容真正写入到Servlet引擎提供的缓冲区中:

1.设置page指令的buffer属性关闭了out对象的缓存功能
2.out对象的缓冲区已满
3.整个JSP页面结束

下面来看一下实例:
<%
    	out.print("aaa");
    	response.getWriter().write("bbb");
%>
我们访问一下MyJsp.jsp页面: \
我们看到了,我们是先向浏览器中输出aaa,然后在输出bbb,但是结果是相反的,原因就是out对象是JspWriter,是带有缓冲的。看下图解释: \
所以我们以后再给浏览器输出数据的时候一定要注意,最好不要同时使用这两个对象,一般我们只是用out对象进行输出数据的。
pageContext对象是JSP技术中最重要的一个对象,它代表JSP页面的运行环境,这个对象不仅封装了对其它8大隐式对象的引用,它自身还是一个域对象(之前我们介绍了三个域对象:ServletContext,Session,Request),这个域对象的生命周期最短,作用域最小,他的作用域就是当前的jsp页面,当然它可以用来保存数据。并且,这个对象还封装了web开发中经常涉及到的一些常用操作,例如引入和跳转其它资源、检索其它域对象中的属性等。

getException方法返回exception隐式对象
getPage方法返回page隐式对象
getRequest方法返回request隐式对象
getResponse方法返回response隐式对象
getServletConfig方法返回config隐式对象
getServletContext方法返回application隐式对象
getSession方法返回session隐式对象
getOut方法返回out隐式对象
pageContext封装其它8大内置对象的意义,思考:如果在编程过程中,把pageContext对象传递给一个普通java对象,那么这个java对象将具有什么功能?
这个我们在后面会介绍自定义标签的时候,这个用途就体现出来了,我们只需要传递一个pageContext对象,就可以操作其他多个对象了,很方便的
pageContext对象中的操作域中数据的方法
public void setAttribute(java.lang.String name,java.lang.Object value)
public java.lang.Object getAttribute(java.lang.String name)
public void removeAttribute(java.lang.String name)
pageContext对象中还封装了访问其它域的方法(和上面的方法不同之处就是多了一个参数,这个参数是可以直接指定相应的域)
public java.lang.Object getAttribute(java.lang.String name,int scope)
public void setAttribute(java.lang.String name, java.lang.Object value,int scope)
public void removeAttribute(java.lang.String name,int scZ http://www.2cto.com/kf/ware/vc/" target="_blank" class="keylink">vcGUpPGJyPgq0+rHtuPe49tPytcSzo8G/PGJyPgpQYWdlQ29udGV4dC5BUFBMSUNBVElPTl9TQ09QRTxicj4KUGFnZUNvbnRleHQuU0VTU0lPTl9TQ09QRTxicj4KUGFnZUNvbnRleHQuUkVRVUVTVF9TQ09QRTxicj4KUGFnZUNvbnRleHQuUEFHRV9TQ09QRSAKPGJyPgoKz8LD5tXiuPa3vbeoyse3x7Oj1tjSqrXEo6zS8s6q1eK49re9t6jKx9Tay/nT0LXE0/LW0LLp1dLK/b7do6yy6dXSy7PQ8srHo7pwYWdlQ29udGV4dC0+cmVxdWVzdC0+c2Vzc2lvbi0+U2VydmxldENvbnRleHQsyOe5+7Lp1dKyu7W9z+DTprXEyv2+3bXEu7CjrL7Nt7W72NK7uPa/1dfWt/u0rqOs1eK49re9t6i6zdauuvPSqsu1tb21xGVsse2078q9tcS5psTcysfSu9H5tcQ8YnI+CjxzdHJvbmc+ZmluZEF0dHJpYnV0Zbe9t6ggIKOoKtbYteOjrLLp1dK497j20/LW0LXEyvTQ1KOpPC9zdHJvbmc+PGJyPgoKPGJyPgoKtb20y86q1rmjrHdlYr+qt6K907Sltb3ByzS49tPyttTP86O6PGJyPgpwYWdlQ29udGV4dKOos8bWrs6qcGFnZdPyo6kgPGJyPgpyZXF1ZXN0o6izxtauzqpyZXF1ZXN00/KjqTxicj4Kc2Vzc2lvbqOos8bWrs6qc2Vzc2lvbtPyo6k8YnI+CnNlcnZsZXRDb250ZXh0o6izxtauzqphcHBsaWNhdGlvbtPyo6k8YnI+CtXiNLj20/K21M/zysfRp8+wd2VitcTW2LXjo6zSssrHscrK1L6ts6O/vLLstcTWqs