在写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");这样的语句就会导致这个异常了。
分享到:
相关推荐
纠结了半天的 java.lang.IllegalStateException: getOutputStream() has already。这个问题困扰了半天,在网上查阅了大量资料 出这个错误一般就是下面2个.....
IllegalStateException: The specified child already has a parent.我的博客中有文章讲解
异常:Caused by: java.lang.IllegalStateException: Method has too many Body parameters Caused by: java.lang.IllegalStateException: Method has too many Body parameters: public abstract ...
标题 "java.lang.IllegalStateException: OutputStream already obtain" 涉及到的是Java编程中的一个常见错误,特别是当处理I/O流时。这个异常通常在尝试获取已经存在的OutputStream实例时抛出,表明该输出流已经被...
1. java.lang.IllegalStateException: No wrapped connection. 2.java.lang.IllegalStateException: Adapter is detached. 原因: 1.单线程一次执行一个请求可以正常执行,如果使用多线程,同时执行多个请求时就会...
Spring框架,由Rod Johnson创立并由Interface21公司推广,自诞生以来,它就致力于简化Java企业级应用(J2EE)的开发,提供了一种非侵入式的解决方案,极大地提高了开发效率。它的目标不仅仅是解决单一层次的问题,...
解决java.lang.IllegalStateException: unread block data的架包
java.lang.IllegalStateException: The content of the adapter has changed but ListView did not receive a notification. Make sure the content of your adapter is not modified from a background thread, but...
这个存储库提供了一种在处理片段传输和后台任务时避免“java.lang.IllegalStateException:Can not perform this action after onSaveInstanceState”的方法。 您可以在的非常权威的阅读有关该问题和可能的解决方案...
在Java开发中,Web服务(Web Service)是一种标准的接口,允许不同系统之间进行通信,而XFire是早年流行的一款用于构建和消费Web服务的开源框架。它使用SOAP(简单对象访问协议)和XML(可扩展标记语言)作为基础,...
### Android异常处理详解 #### 一、异常机制概述 异常机制是编程语言中用于处理运行时错误的关键技术之一。在Android开发中,由于其基于Java语言,因此异常处理机制也遵循Java的标准。本文旨在深入探讨Android开发...
Java是一种高级编程语言,通常用于开发跨平台的应用程序。然而,有时我们可能需要在Java程序中调用操作系统底层的动态链接库(DLLs on Windows,SOs on Linux,dylibs on macOS),以便利用C、C++等语言编写的高性能...
### 面向对象编程与Objective-C:苹果iOS开发者指南 #### 一、概述 面向对象编程(Object-Oriented Programming, ...深入理解Objective-C不仅可以帮助开发者更好地理解苹果平台的技术栈,还能提升其解决问题的能力。
// 调用可能抛出异常的代码 } catch (ComException e) { int hresult = e.getHresult(); String description = e.getDescription(); // 处理错误... } ``` ## 7. 多线程和线程安全 Jacob支持在多线程环境中...
本文将对“tomcat启动的错误”这一主题进行深入探讨,并结合具体的错误信息来分析其原因及解决方案。 #### 错误描述:“Could not load com.mysql.jdbc.Messages Could not load java.net.BindException MySQL JDBC...
WebSocket是Web交互的一种实时通信协议,它允许服务器与客户端之间进行双向通信,即服务器不仅可以响应客户端的请求,还可以主动向客户端推送数据。在Java中,有两种常见的方式实现WebSocket:使用Tomcat内置的...
### PowerBuilder 中从 Excel 导入数据到 DataWindow 的实现方法 #### 标题解析: 在 PowerBuilder 开发环境中,经常需要将外部数据源(如 Excel 文件)中的数据导入到程序内部的数据展示组件(DataWindow)中进行...
在工程设计领域,GD&T(Geometric Dimensioning and Tolerancing)是一种标准,用于精确地定义零件的几何特征和尺寸公差。标题提及的“For gd&t not affected - when to revise dwg guidelines 3-21-02.ppt”指的是...