JSP九大内置对象之out对象

JSP九大内置对象之out对象

为何会有JSP内置对象

JSP引擎在调用jspServlet时,会传递或创建9个与web开发相关的对象供jspServlet使用。JSP技术的设计者为便于开发人员编写JSP页面时获得这些web对象的引用,特意定义了9个相应的变量,开发人员在JSP页面中通过这些变量就可以快速获得这9大对象的引用

九个内置对象:

page

config

application

request

response

session

out

exception

pageContext

out对象

out对象用于向浏览器输出数据,预制对应的是Servlet的PrintWriter对象,但是这个out对象的类型不是PrintWriter类型,而是JspWriter。

jsp输出底层使用的是response.getWriter(),这里需要讲解一下JSP缓存和Servlet缓存,输出过程是这样:

874710-20170222202031054-1615917490.png

JSP页面转换为Servlet后,使用的out对象是JspWriter类型的,所以是会先将要发送的数据存入JSP输出缓存中,然后,等JSP输出缓存满了在自动刷新到servlet输出缓存,等serlvet输出缓存满了,或者程序结束了,就会将其输出到浏览器上。除非手动out.flush()。

图片.png

图片.png

分析:如果按没有jsp缓存和servlet缓存的话,输出的结果应该是abc,但是输出的却是bac,为什么呢?按照我们上面所说的原理进行分析,out对象是先将其输出到JSP缓存中,所以a加入了jsp缓存,response.getWriter().print("b")是直接将b输出到servlet缓存中,然后又使用out对象将c输出到jsp缓存,到程序结束,servlet缓存中有b,然后jsp会将缓存中的内容就刷新到servlet缓存中,serlvet就是bac了,然后到浏览器也就得到我们的输出结果了。如果将out.flush()注释去掉,答案就是abc。原因是我们手动的将jsp缓存里面的数据刷新到servlet缓存里面了。

out对象的API

int getBufferSize()【得到缓存大小】

int getRemaining()【得到未使用缓存的大小】

boolean isAutoFlush()

void println()

void flush()

void close()

void clearBuffer()

void clear()

相关推荐

桌面精灵大全-桌面精灵哪个好
365bet客户端

桌面精灵大全-桌面精灵哪个好

📅 07-10 👁️ 3652
腾讯系免流卡推荐:哪些套餐真正免流量?
365不给提款怎么办

腾讯系免流卡推荐:哪些套餐真正免流量?

📅 07-14 👁️ 1785
怎么知道摄像头开没开
365bet足球即时比分

怎么知道摄像头开没开

📅 08-24 👁️ 7951
在 Office for Mac 中保存文件
365不给提款怎么办

在 Office for Mac 中保存文件

📅 09-02 👁️ 3110
麻将初学者必读:基础知识入门全解析(二)
365不给提款怎么办

麻将初学者必读:基础知识入门全解析(二)

📅 07-31 👁️ 9643
王心凌下身半裸照流出!小三门、整容门完整回顾
365bet足球即时比分

王心凌下身半裸照流出!小三门、整容门完整回顾

📅 09-05 👁️ 5096
广东雅琪生物科技公司简介
365不给提款怎么办

广东雅琪生物科技公司简介

📅 08-19 👁️ 964