马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
在学习JSP的out内置属性时发现一个问题
<!-- 将JSP的缓冲区设为1kb -->
<%@ page buffer="1kb" import="java.io.*" contenType="text/html" pageEncoding="UTF-8" %>
<%
out.clear();
int counter = Integer.parseInt(request.getParameter("count"));
for (int i=0; i < count; i++)
{
out.write("1");
}
PrintWriter servletOut = pageContext.getResponse().getWriter();
servletOut.write("使用PrintWriter对象输出数据!");
%>
有个疑问在浏览器地址栏输入 http://localhost:8080/webdemo/chapter5/testBuffer.jsp?count=1026
的情况下
页面的响应是
111111111111111111111111111111....使用PrintWriter对象输出数据!11
我的问题在于当程序循环把1输入到JSPWriter的缓冲区的时候满了1kb的字符1之后,将缓冲区写入到PrintWriter后,根据页面响应
是程序离开了for循环转而执行了下一个语句”PrintWriter servletOut = pageContext.getResponse().getWriter();“把PrintWriter的内容写入了servlet缓冲区,
然后再回去未完成的for循环中把JSPWriter中清空后再次写入的两个1字符写入了servlet引擎中的缓冲区结束后,再一起写入客户端吗?
还是因为JSPWriter缓冲区满了之后清空输入到servlet引擎的缓冲区的时候就导致下一个语句的PrintWriter和for循环剩下的两次循环一起运行了?那这样还算单线程吗?? |