jsp向浏览器页面输出

本文链接:https://blog.csdn.net/shenqueying/article/details/80841347

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

 

 

补充: response.getWriter () 返回的是 PrintWriter ,这是一个打印输出流。
response.getWriter ().print(), 不仅可以打印输出文本格式的(包括 html 标签),还可以将一个对象以默认的编码方式转换为二进制字节输出
response.getWriter ().writer () , 只能打印输出文本格式的(包括 html 标签),不可以打印对象。

———————————————— 版权声明:本文为CSDN博主「shenqueying」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/shenqueying/article/details/80841347