这个问题在网上查阅了大量资料,基本上就那一两种感觉说得也有道理主:
一、response.getWriter()和response.getOutputStream()相冲突造成的.
上网查阅多资料,引起原因:
1.是web容器生成的servlet代码中有out.write(""),这个和JSP中调用的response.getOutputStream()产生冲突.即Servlet规范说明,不能既调用response.getOutputStream(),又调用response.getWriter(),无论先调用哪一个,在调用第二个时候应会抛出IllegalStateException,因为在jsp中,out变量实际上是通过response.getWriter得到的,程序中既用了response.getOutputStream,又用了out变量,故出现以上错误。
2.在tomcat中jsp编译成servlet之后在函数_jspService(HttpServletRequest request,
HttpServletResponse response)的最后有一段这样的代码
finally{
if (_jspxFactory
!= null) _jspxFactory.releasePageContext(_jspx_page_context);
}
这里是在释放在jsp中使用的对象,会调用response.getWriter(),因为这个方法是和responsegetOutputStream()相冲突的!所以会出现以上这个异常。
提供解决方案:
如果是在jsp页面,使用以下代码:
out.clear();
out=pageContext.pushBody();
如果写成一个类的话,调用pageContext参数,在jsp里面,它是一个对象
,因此在调用参数时加上类型Page(大写),引入的包为import javax.servlet.jsp.*(eclipse自带);
因此在java类里代码如下:
JspWriter out=page.getOut();//此处的out属于import
javax.servlet.jsp.JspWriter方法的实例。
out.clear();
out=page.pushBody();
response.flushBuffer();
另外PageContex与ServletContext是不同的,PageContext就是JSP中的page,ServletContext就是JSP中的application,两者的scope不一样。
我没在jsp中调用response,尝试java中的类解决方案不行!
二、Struts方法之间调用引起的
引起原因:
每个方法都返回的是一个ActionForward对象,而response是ActionForward对象参数,所以就会使response冲突!
提供解决方案:struts 中调用 的方法 return null
用这种方案得已解决!备用!
分享到:
相关推荐
纠结了半天的 java.lang.IllegalStateException: getOutputStream() has already。这个问题困扰了半天,在网上查阅了大量资料 出这个错误一般就是下面2个.....
在Java的Web开发中,`java.lang.IllegalStateException: Cannot call sendError() after the response has been committed` 是一个常见的错误,通常发生在尝试在HTTP响应已经发送到客户端之后调用`sendError()`方法...
1、错误信息 异常:Caused by: java.lang....Caused by: java.lang.IllegalStateException: Method has too many Body parameters: public abstract com.iot.framework.core.response.CommResponse ...
标题 "java.lang.IllegalStateException: OutputStream already obtain" 涉及到的是Java编程中的一个常见错误,特别是当处理I/O流时。这个异常通常在尝试获取已经存在的OutputStream实例时抛出,表明该输出流已经被...
IllegalStateException: The specified child already has a parent.我的博客中有文章讲解
1. java.lang.IllegalStateException: No wrapped connection. 2.java.lang.IllegalStateException: Adapter is detached. 原因: 1.单线程一次执行一个请求可以正常执行,如果使用多线程,同时执行多个请求时就会...
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: unread block data的架包
### PowerBuilder 中从 Excel 导入数据到 DataWindow 的实现方法 #### 标题解析: 在 PowerBuilder 开发环境中,经常需要将外部数据源(如 Excel 文件)中的数据导入到程序内部的数据展示组件(DataWindow)中进行...
《Spring框架:开启Java开发新纪元》 Spring框架,由Rod Johnson创立并由Interface21公司推广,自诞生以来,它就致力于简化Java企业级应用(J2EE)的开发,提供了一种非侵入式的解决方案,极大地提高了开发效率。它...
Type 异常报告 消息 Failed to convert ... nested exception is java.lang.IllegalStateException: Cannot convert value of type 'java.lang.String' to required type 'java.util.Date': no matching editors or co
2013-08-12 14:33:37.672:... Add CGLIB to your classpath.:java.lang.IncompatibleClassChangeError: class net.sf.cglib.core.DebuggingClassWriter has interface org.objectweb.asm.ClassVisitor as super class
在Java开发中,Web服务(Web Service)是一种标准的接口,允许不同系统之间进行通信,而XFire是早年流行的一款用于构建和消费Web服务的开源框架。它使用SOAP(简单对象访问协议)和XML(可扩展标记语言)作为基础,...
这个存储库提供了一种在处理片段传输和后台任务时避免“java.lang.IllegalStateException:Can not perform this action after onSaveInstanceState”的方法。 您可以在的非常权威的阅读有关该问题和可能的解决方案...
Java是一种高级编程语言,通常用于开发跨平台的应用程序。然而,有时我们可能需要在Java程序中调用操作系统底层的动态链接库(DLLs on Windows,SOs on Linux,dylibs on macOS),以便利用C、C++等语言编写的高性能...
信息: Illegal access: this web application instance has been stopped already. Could not load net.sf.ehcache.store.disk.DiskStore$KeySet. The eventual following stack trace is caused by an error thrown...
java.lang.IllegalStateException: The maximum Java version for OrientDb is Java 11. Please check current Java version meets this requirement. 参见: ...
标题中的"The full error is: java.lang.IllegalStateException"是一个典型的Java编程错误,通常表示在不合法或不适当的状态下调用了某个方法。这个错误通常暗示程序试图执行一个不能在这个特定时刻执行的操作。让...
### 面向对象编程与Objective-C:苹果iOS开发者指南 #### 一、概述 面向对象编程(Object-Oriented Programming, OOP)是一种广泛应用于软件开发中的编程范式,它将程序设计围绕“对象”进行组织。...