JSPWriter 和 servlet引擎中PrintWrier的对比中产生对程序运行的疑问
在学习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循环剩下的两次循环一起运行了?那这样还算单线程吗?? JSP 是线程不安全的 凉生我怕怕 发表于 2017-8-1 16:12
JSP 是线程不安全的
意思是这是一个单线程但是出现了 同时对servlet的缓冲区的写入的问题是吗? ? 你先试试加上这个
<%@ page language="java" import="java.util.*" pageEncoding="UTF8" isThreadSafe="true"%> 凉生我怕怕 发表于 2017-8-1 17:19
你先试试加上这个
还是一样啊isThreadSafe="true"这个只是让它被程序认定为多线程安全的吧 不是把它转换成多线程安全的吧
页:
[1]