在写JSP程序的时候,如果程序中调用了response.getOutputStream()去向客户端输出文件等数据流,容器就会抛出这样的异常:
Java.lang.IllegalStateException: getOutputStream() has already been called for this response
at org.apache.catalina.connector.Response.getWriter(Response.java:530)
at org.apache.catalina.connector.ResponseFacade.getWriter(ResponseFacade.java:127)
OR
java.lang.IllegalStateException: getOutputStream()はこのレスポンスに対して既に呼び出されています
org.apache.coyote.tomcat5.CoyoteResponse.getWriter(CoyoteResponse.java:599)
org.apache.coyote.tomcat5.CoyoteResponseFacade.getWriter(CoyoteResponseFacade.java:163)
org.apache.jasper.runtime.JspWriterImpl.initOut(JspWriterImpl.java:122)
org.apache.jasper.runtime.JspWriterImpl.flushBuffer(JspWriterImpl.java:115)
org.apache.jasper.runtime.PageContextImpl.release(PageContextImpl.java:190)
产生这样的异常原因是web容器生成的servlet代码中有out.write(""),这个和JSP中调用的response.getOutputStream()产生冲突,
下面是web容器生成的部分servlet代码:
out = pageContext.getOut();
_jspx_out = out;
out.write("\r\n");
out.write("\r\n");
解决的方法有两步:1、如果JSP中有
<%@ page import ... %>
<%@ page import ... %>
这样的代码,则改为:
<%@ page import ... %><%
%><%@ page import ... %><%
%><%
// ...getOutputStream()...
%>
改完后生成的servlet代码:
out = pageContext.getOut();
_jspx_out = out;
//out.write("\r\n");这个将被去掉
//out.write("\r\n");这个将被去掉
2、如果第一步改完还是有异常,则在程序的最后添加:
out.clear();
out = pageContext.pushBody();
就可以解决了。
--------------
PS:注意"回车"问题.
jsp中是可以用getOutputStream的,
条件就是jsp代码文件里〈%%〉之外不能够有回车 否则jsp被编译成servlet的时候会生成 out.write("\r\n");这样的语句就会导致这个异常了。
分享到:
相关推荐
描述中的链接指向了一些技术论坛的讨论,这些讨论可能包含了遇到问题的具体上下文和解决方案。文件名中的"ReportGenerateByTemplate.jsp"暗示问题可能与生成报告或动态HTML有关,这可能涉及到Servlet或JSP的输出流...
scratch少儿编程逻辑思维游戏源码-足球冠军.zip
实训商业源码-【超人】积分商城 5.2.26-毕业设计.zip
windows,C# WInform,Excel操作类
这个函数可以直接把tdms文件的数据直接储存为MAT文件,并显示在工作区.具体的使用教程可以参考这篇文章。https://blog.csdn.net/weixin_41968197/article/details/106287744
φ3.2m两段式煤气发生炉CAD工艺流程图.rar
实训商业源码-daohang-毕业设计.zip
内容概要:文章深入探讨了在汽车电子电气架构中,网关ECU采用多CPU解决方案实现网关功能的技术背景、设计原则、挑战与解决方案、典型场景及其未来发展趋势。随着汽车电子电气架构向高集成化、智能化发展,网关ECU需处理复杂的多协议数据转发、协议转换、安全过滤等任务,单CPU难以满足需求。多CPU解决方案通过合理的架构设计,确保满足时延、吞吐量、资源管理等核心要求。文中详细介绍了多CPU架构的核心设计原则,包括内部接口设计、资源协同与容错设计,并针对典型场景提出了具体解决方案。此外,文章还讨论了多CPU架构面临的挑战及应对策略,并展望了未来的发展趋势,如异构计算融合、区域网关、确定性以太网等。; 适合人群:从事汽车电子工程领域的工程师和技术人员,尤其是对网关ECU设计和多CPU架构感兴趣的读者。; 使用场景及目标:①理解网关ECU中多CPU解决方案的必要性和优势;②掌握多CPU架构设计的关键技术和最佳实践;③了解多CPU架构在汽车电子电气架构中的应用前景和发展方向。; 其他说明:本文不仅提供了技术层面的深度解析,还强调了长期主义的重要性,鼓励读者在技术追求的同时保持对自身成长的关注。
实训商业源码-ddos压力测试-毕业设计.zip
JavaScript语言教程&案例&相关项目资源,奖励仅限VIP资源
实训商业源码-超级图文最新资源包及上传位置说明-毕业设计.zip
X-Y数控工作台机电系统设计.rar
实训商业源码-活码自动进群V1.0.0 开源版-毕业设计.zip
YZ8H压路机振动轮设计.rar
PE400x600复摆颚式破碎机设计.rar
scratch少儿编程逻辑思维游戏源码-像素森林.zip
scratch少儿编程逻辑思维游戏源码-躁狂症 RPG游戏.zip
scratch少儿编程逻辑思维游戏源码-战争模拟器(1).zip
内容概要:本文详细介绍了如何使用C# WinForm开发一个纯原生的工作流表单设计器,涵盖动态控件生成、拖拽移动、对齐辅助线、属性调整等功能模块。作者通过具体代码示例展示了如何利用鼠标事件、坐标计算、绘图API等技术手段实现这些功能。文中还提供了扩展功能的方向,如控件Tag属性存储业务数据、自定义控件外观、XML序列化保存流程图结构等。 适合人群:具有一定C#编程基础,尤其是对WinForm开发感兴趣的开发者。 使用场景及目标:适用于需要快速构建可视化工作流表单的应用场景,目标是掌握WinForm的事件机制、GDI+绘图以及控件管理等核心技术。 其他说明:本文强调了纯原生开发的优势,即不需要依赖第三方库,所有功能均由系统自带组件实现,有助于深入理解底层机制并提高代码可控性和灵活性。
内容概要:本文深入探讨了无人驾驶车辆使用动力学MPC(模型预测控制)算法进行蛇形线路径跟踪的技术细节。首先介绍了蛇形线的特点及其对无人驾驶车辆带来的挑战,随后详细讲解了动力学MPC算法的基础理论,包括车辆状态表示、运动方程建模以及控制输入的选择。接着重点阐述了如何通过定义合适的目标函数并加入适当的约束条件来优化MPC算法,使其能够高效地完成蛇形线路径跟踪任务。此外,文中还讨论了一些常见的错误做法和技术改进措施,如引入航向角误差补偿项、采用松弛变量处理约束条件等。最后,作者分享了多个实用的小技巧,例如预测时域内的速度适配和平滑处理、适当降低控制频率以提高跟踪精度等。 适合人群:对无人驾驶技术和控制算法感兴趣的科研人员、工程师及高校学生。 使用场景及目标:适用于研究无人驾驶车辆路径规划与控制领域的项目开发,旨在帮助读者掌握动力学MPC算法的具体应用方法,从而更好地解决实际工程问题。 其他说明:文章不仅提供了详细的理论推导和代码实现,还结合具体案例进行了充分的实验验证,确保所提出的解决方案具有较高的可行性和可靠性。