首先大家先看下一段jsp的代码:
<body>
<%
out.write("我先输出");
response.getWriter().write("我后输出");
%>
</body>
然后,我们再来访问这一段jsp,我们预期的效果应该是 “我先输出”在前面,“我后输出”在后面,但是其实真实的效果却是。。。
其实它们的功能几乎都是一样的,但是这里为什么是这种情况呢?这是因为out是JspWriter对象,我们先往JspWriter对象中输出内容保存在JspWriter的缓冲区,接着又往response的缓冲区中输出内容。大家都知道我们往浏览器输出数据时是靠response对象来输出数据的,在浏览器展示之前JspWriter的缓冲区的内容会先写到response中,这样response中的内容肯定是先把“我后输出”写在前面,之后又把out缓冲区中的内容添加到后面。所以导致我们看的结果是这样的。如果看不懂,我下面随便花了张图,帮助理解下(画的难看,能说明意思就行)