Mar*_*son 15 buffer jsp java-ee printwriter output
为了你的"重复"的狂热分子,对这样的权利类似的问题在这里.不同之处在于我画了一个生动的例子,我无法理解其输出.
对于文档的JspWriter和PrintWriter的说,有两点不同:1的JspWriter可以抛出异常,应该的PrintWriter不这样做.2. JspWriter在场景后面使用PrintWriter,但由于默认情况下JSP页面是缓冲的,因此直到the buffer is flushedJSP页面上下文中的任何含义都不会创建PrintWriter .我不确定我是否理解了最后一部分.考虑这个JSP页面:
<%@page import="java.io.PrintWriter"%>
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>JspWriter versus PrintWriter</title>
</head>
<body>
<p>I should be row one.</p>
<%
out.println("<p>JspWriter said: I should be the second row.</p>");
PrintWriter pw = response.getWriter();
pw.println("<p>PrintWriter said: I should be the third row.</p>");
%>
<p>I should be the fourth row.</p>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
它产生以下输出:
PrintWriter said: I should be the third row.
I should be row one.
JspWriter said: I should be the second row.
I should be the fourth row.
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,JspWriter将我的字符串输出到浏览器,我期望它.但是在将所有其他内容发送到浏览器之前,PrintWriter会输出他的字符串.如果我们检查发送到浏览器的源代码,则在DOCTYPE声明之前,PrintWriter的字符串将作为第一行发送.那么在上面的例子中,究竟发生了什么?
JB *_*zet 16
解释在你自己的问题中:
JspWriter在场景后面使用PrintWriter,但由于默认情况下JSP页面是缓冲的,因此在刷新缓冲区之前不会创建PrintWriter.
这意味着写入JspWriter的内容被缓冲,并且一旦刷新了此缓冲区(因为缓冲区已满,或者因为JSP已到达其执行结束),内容将写入响应的PrintWriter.
所以你的例子的流程如下:
| 归档时间: |
|
| 查看次数: |
18542 次 |
| 最近记录: |