JSP中out与response.getWriter()输出的区别

JSP中out与getWriter的区别

输出的不同之处

首先,我们来看一下我们通过切换out.writeresponse.getWriter在浏览器上输出的区别:

out.write输出语句放在最后:
在这里插入图片描述
response.getWriter输出语句放在最后:
在这里插入图片描述

这里就不跟大家罗嗦了,这两种不同顺序代码输出结果一模一样,输出如下:
在这里插入图片描述
到这里,想必你也想看看不一样的长啥样的吧!!
所以此处我们添加了下图中的第二行代码,详情请关注下下张输出图片吧.

在这里插入图片描述

添加代码后的输出结果为:
在这里插入图片描述
不一样的是出来了,那么这是为什么呢?

详细解释

两者主要区别:

  1. out.write()
    javax.servlet.jsp public abstract class JspWriter extends java.io.Writer
    内置对象out的类型是JspWriter
  2. response.getWriter()
    javax.servlet.ServletResponse public abstract java.io.PrintWriter getWriter() throws java.io.IOException
    response.getWrite()返回的类型是java.io.PrintWriter

使用方式不同

  1. JspWriter是JSP的内置对象,直接使用即可,对象名out是保留字,也只能通过out来调用其相关方法。
  2. PrintWriter则是在用的时候需要通过内置对象response.getWriter()获得,并且JspWriter相当于一个带缓冲功能的printWriter,它不是直接将数据输出到页面
  3. 在JSP页面代码执行完成后,会执行两个操作:
    执行out.flush()操作,会把out缓冲区中的数据追加到response缓冲区中去;
    再执行response刷新操作,把全部数据写给客户端

过程分析
接下来,分析一下下面结果执行过程
在这里插入图片描述
out.write(“out输出1”); 执行后向out缓冲区写入数据
在这里插入图片描述
out.flush(); 执行后将out缓冲区中的数据追加到response缓冲区中
在这里插入图片描述
response.getWriter(“response输出1”)
response.getWriter(“response输出2”) 将数据写入response缓冲区中
在这里插入图片描述
out.write(“out输出2”) 执行后向out缓冲区写入数据
在这里插入图片描述
之后,JSP代码执行完成后,再次执行out.flush()将out缓冲区中的数据追加到response缓冲区中
在这里插入图片描述 最终,输出到浏览器.