JSP知识点----------9大隐式对象

在jsp被翻译成servlet之后,service方法中有9个对象定义并初始化完毕。在jsp脚本中可以直接使用这9个对象。
这9个对象之所以能用,因为在service方法中被定义并初始化。
PageContext pageContext:JSP的页面容器,是一个域对象。作用域在当前页面内部有效。作用并不大,可以直接使用局部变量。pageContext还可以向其他域存储数据。并且内部维护着其他8大隐式对象的索引。
HttpSession session:用于保存用户信息,session是将用户的信息保存在服务器端。
ServletContext application:所有用户的共享信息
ServletConfig config:服务器配置,可以去的初始化参数
JspWriter out:页面所有输出内容都是使用out()方法,不难看出该对象用于页面输出。out.write();
这是一段JSP代码,请问在页面上的显示顺序是什么?

<body>
	aaaaaaaaaaaaaa
	<%
		out.write("bbbbbbb");
		response.getWriter().write("ccccc“);
		
	%>
	<%="ddddddddddddddddddddd" %>
</body>
</html>

正确答案是:cabd。
为什么c在abd前面呢?
这是因为abd最终都会编译到out缓冲区成out.write
c被编译到response缓冲区,tomcat引擎会从response缓冲区获得内容
out缓冲区内容最终会被刷到response缓冲区,而out缓冲区默认8kb
在JSP的page标签中存在buffer属性,能够设置缓冲区的大小,值就代表out缓冲区的大小,如果设置buffer=“0kb”,此时就没有out缓冲区,内容会直接写到response1缓冲区,则输出顺顺序为abcd

Object page: page=this,page就是当前对象,指当前页面转换后的Servlet类的实例。
以上是6大对象。

可以看到在service方法中还有JspWriter _jspx_out以及_jspx_page_context = pageContext,这两个对象并不属于9大隐士对象。
在源码下方能够看到 _jspx_out = out;以及 _jspx_page_context = pageContext;
由此可以看出 _jspx_out对象和out对象作用相同。 _jspx_page_context 对象和pageContext对象作用相同。可能由于外国人的编码规范原因,尽管它们二者是做不同的事情,功能相同,但依然拥有不同的名字。

HttpServletRequest request:用于得到用户请求信息
HttpServletResponse response:服务器向客户端的回应信息
加上request以及response对象,以上是8大对象。

但依然缺少一个,这个对象需要改变一些内容才能够在源码中“现身”。
少的对象就是exception。需要将jsp页面中page标签中加上isErrorPage=“true”才能够在源码中显现,而平时isErrorPage默认的值为fasle。
此时在源码中会多出这么一段内容。

java.lang.Throwable exception = org.apache.jasper.runtime.JspRuntimeLibrary.getThrowable(request);
    if (exception != null) {
      response.setStatus(javax.servlet.http.HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
    }

为什么设置为errorPage后才出现这段代码呢?
该页面为errorPage页面时,当其他页面出现错误,就会跳转到该页面,此时该页面需要将上个页面的错误信息封装到exception中。exception.getMessage();

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值