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的区别

jsp中out跟response.getWriter()的区别_第1张图片

你可能感兴趣的:(jsp学习,java,web)