鱼C论坛

 找回密码
 立即注册
查看: 3394|回复: 4

JSPWriter 和 servlet引擎中PrintWrier的对比中产生对程序运行的疑问

[复制链接]
发表于 2017-8-1 11:41:56 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

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循环剩下的两次循环一起运行了?那这样还算单线程吗??
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2017-8-1 16:12:28 | 显示全部楼层
JSP 是线程不安全的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-8-1 16:13:47 | 显示全部楼层

意思是这是一个单线程但是出现了 同时对servlet的缓冲区的写入的问题是吗? ?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-8-1 17:19:06 | 显示全部楼层
你先试试加上这个
<%@ page language="java" import="java.util.*" pageEncoding="UTF8" isThreadSafe="true"%>
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-8-1 22:55:55 | 显示全部楼层

还是一样啊  isThreadSafe="true"这个只是让它被程序认定为多线程安全的吧 不是把它转换成多线程安全的吧
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-15 00:48

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表