`

java.lang.IllegalStateException异常:简单分析和简单解决方案

阅读更多

今天写java文件下载程序,完成后使用一切正常,但是总抛出java.lang.IllegalStateException异常,虽然并不影响正常使用,但看了总让人觉得很不舒服,检查代码并没有错,最后上网查了不少资料,终于发现原因之所在。


我们在做文件上传或者下载,或者过滤等操作时,可能要用到页面的输出流.
例如在action中使用:
    response.reset();
    response.setContentType(”application/vnd.ms-excel”);
    OutputStream os = response.getOutputStream();  
抛出异常:java.lang.IllegalStateException


原因分析:
这是web容器生成的servlet代码中有out.write(””),这个和JSP中调用的response.getOutputStream()产生冲突.
即Servlet规范说明,不能既调用 response.getOutputStream(),又调用response.getWriter(),无论先调用哪一个,在调用第二个时候应会抛出 IllegalStateException,

因为在jsp中,out变量是通过response.getWriter得到的,在程序中既用了response.getOutputStream,又用了out变量,故出现以上错误。

 

  • 解决:

法一:在JSP文件中,加入下面两句

<%
out.clear();
out = pageContext.pushBody();
%>

此法的缺陷:
很多开发项目并不是JSP前端,如freemarker,velocity等
造成问题的"response.getOutputStream()"并未被写在JSP里,而是写在servlet/action里

 

法二: 在action中,不要return 回具体的result文件,而是return null

 //return SUCCESS;
 return null;
分享到:
评论
2 楼 smallplum 2012-08-22  
我爱java 写道
可是修改了return返回值功能就失效了啊,有没有不修改return返回值的啊?

下载文件,有没有返回值,不是都一样吗
1 楼 我爱java 2012-08-13  
可是修改了return返回值功能就失效了啊,有没有不修改return返回值的啊?

相关推荐

    java.lang.IllegalStateException: OutputStream already obtain

    标题 "java.lang.IllegalStateException: OutputStream already obtain" 涉及到的是Java编程中的一个常见错误,特别是当处理I/O流时。这个异常通常在尝试获取已经存在的OutputStream实例时抛出,表明该输出流已经被...

    spring入门好教程

    Spring框架,由Rod Johnson创立并由Interface21公司推广,自诞生以来,它就致力于简化Java企业级应用(J2EE)的开发,提供了一种非侵入式的解决方案,极大地提高了开发效率。它的目标不仅仅是解决单一层次的问题,...

    java.lang.IllegalStateException(解决方案).md

    项目中碰到的,已解决,写个文档记录一下

    weblogic12c部署webservice错误问题WSSERVLET11

    错误信息"无法解析运行时描述符: java.lang.IllegalStateException: MASM0001:"指出在部署Web服务时遇到了异常情况。这个错误代码MASM0001通常与WebLogic的模块组装(Module Assembly)过程有关,该过程是将应用组件...

    Tomcat启动springboot项目war包报错:启动子级时出错的问题

    这个错误信息出现在`java.lang.IllegalStateException`中,具体是在`ContainerBase.addChildInternal`方法抛出的,这表明在尝试添加或启动Spring Boot的web应用(war包)作为Tomcat的一个子容器时发生了问题。...

    action-buffer:提供了在处理后台任务时避免片段过渡期间出现 IllegalStateException 的示例

    这个存储库提供了一种在处理片段传输和后台任务时避免“java.lang.IllegalStateException:Can not perform this action after onSaveInstanceState”的方法。 您可以在的非常权威的阅读有关该问题和可能的解决方案...

    java常见异常汇总

    ### Java常见异常汇总 ...综上所述,Java 开发过程中会遇到各种异常情况,理解这些异常的原因和解决方案对于提高开发效率至关重要。以上列举的一些常见异常及其处理方法希望能帮助开发者更好地解决问题。

    python selenium运行失败常见错误.docx

    java.lang.IllegalStateException: The path to the driver executable must be set by the webdriver.chrome.driver system property; 解决方案: * 将下载好的驱动添加到系统环境变量 path 中,类似 Java 变量...

    tomcat部署多个项目.pdf

    Tomcat 部署多个项目解决方案 在 Tomcat 中部署多个项目时,可能会遇到一些问题,例如多个项目间的配置冲突、日志记录问题等。以下是解决这些问题的方法和相关知识点。 问题 1:java.lang.IllegalStateException ...

    tomcat启动的错误

    本文将对“tomcat启动的错误”这一主题进行深入探讨,并结合具体的错误信息来分析其原因及解决方案。 #### 错误描述:“Could not load com.mysql.jdbc.Messages Could not load java.net.BindException MySQL JDBC...

    java的常见问题及解决方法定义.pdf

    以下是一些常见问题及其解决方案: 1. **类签名不匹配**: 当出现“'org.apache.commons.collections.SequencedHashMap'的签名信息与同一包中的其他类的签名信息不匹配”这样的错误时,通常是因为不同库提供的相同...

    尚学堂android开发常用错误集.docx

    01-16 22:18:39.222:E/AndroidHttpClient(26745): java.lang.IllegalStateException: AndroidHttpClient created and never closed ``` **原因分析**: 此错误表明`AndroidHttpClient`对象创建后未曾被正确关闭。`...

    log的方法分析

    本文将针对几种常见的错误日志进行深入解析,并给出相应的解决方案。 #### 二、常见异常日志类型及分析 ##### 1. 空指针异常 (NullPointerException) **定义**: 当尝试访问一个空对象的成员时,Java会抛出`...

    javax.servlet-api-3.1.0

    java.lang.IllegalStateException: Failed to read Class-Path attribute from manifest of jar file:/XXX 出现这个问题的解决方案就是将原有的jar删除 然后重新下载过一遍就可以使用

    详解spring cloud Feign使用中遇到的问题总结

    在使用 Feign 时,需要正确使用@PathVariable 注解,否则,会抛出异常,例如:Caused by: java.lang.IllegalStateException: PathVariable annotation was empty on param 0。正确的使用方式是:@RequestMapping...

    将应用部署到weblogic10及oracle linux遇到的问题及解决方案

    在本文中,我们将详细记录这些问题和解决方案,以便为后续的部署工作提供参考。 一、意外的异常 在将 Tomcat 环境下的应用移植到 WebLogic 下的过程中,遇到了第一个问题,那就是意外的异常错误。在处理请求时出现...

    WebRex:WebRex是用于在运行时进行Web资源聚合和优化的工具。 与wro4j等其他开放源代码优化器相比,它的突出优点是聚合和优化是动态的,而不是静态的

    WebRex目录包括WebRex标签库在JSP页面中定义一个插槽将资源分配到插槽其他资源类型的使用WebRex Java API 获取单个资源的URL 获取聚合结果的URL 将资源添加到页面上的现有插槽中常问问题为什么会出现异常:java.lang...

    将应用部署到weblogic10及oracle linux时遇到的问题 .pdf

    首先,我们遇到的第一个问题是“意外的异常”和“java.lang.OutOfMemoryError: unable to create new native thread”。这通常发生在尝试上传大型应用war包至WebLogic管理服务器时。由于应用较大,系统内存不足,...

Global site tag (gtag.js) - Google Analytics