jsp中out跟response.getWriter()的区别

jsp向浏览器页面输出的方式有以下四种

1.<%="aaaa"%>
2.bbbbbbbbbbbbb
3.<%out.write("ccccc");%>
4.<%response.getWriter.write("dddd");%>

当我们运行这个jsp并在页面输出的顺序是

为什么呢?

上面1、2、3这三个方式,在jsp被翻译为servlet时,都被翻译为out.write()方法,也就是说response.getWriter.write()方法时先执行的。其实原因很简单,当我们向页面输出内容时,tomcat服务器会默认提取response缓冲区中的内容。而out对象本身也有个out缓冲区,1、2、3方法执行后要输出的内容先被存到out缓冲区内,然后再转移到response缓冲区中被tomcat服务器提取,所以4方法先被执行,然后等到1、2、3的内容转移到response缓冲区之后再被tomcat服务器刷到页面上,存在一个时间差。

当然我们也可以让1、2、3的内容直接存到response缓冲区中。这是因为,out缓冲区可以通过指令buffer来设置它的缓存区大小,一般默认的是8kb,当我们设置为buffer=“0kb”时,就让out缓冲区存储空间为0,这样1、2、3方法输出的内容直接存到response缓冲区中,就不存在时间差了。

下面这张图跟上面的内容有所出入,但是生动的表现了out跟response.getWriter的区别


  • 18
    点赞
  • 35
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值