Struts2下载文件点取消出现的异常java.lang.IllegalStateException 解决方案
来源:互联网 发布:java工程师都要会什么 编辑:程序博客网 时间:2024/05/16 11:33
在使用Struts2下载文件时,如果点击保存或打开,没问题,点击取消时则会抛出如下异常:
严重: Servlet.service() for servlet default threw exception
java.lang.IllegalStateException
at org.apache.catalina.connector.ResponseFacade.sendError(ResponseFacade.java:407)
at javax.servlet.http.HttpServletResponseWrapper.sendError(HttpServletResponseWrapper.java:108)
at com.opensymphony.module.sitemesh.filter.PageResponseWrapper.sendError(PageResponseWrapper.java:176)
at javax.servlet.http.HttpServletResponseWrapper.sendError(HttpServletResponseWrapper.java:108)
at org.apache.struts2.dispatcher.Dispatcher.sendError(Dispatcher.java:770)
at org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:505)
at org.apache.struts2.dispatcher.FilterDispatcher.doFilter(FilterDispatcher.java:395)
原因:
stream对应的类是org.apache.struts2.dispatcher.StreamResult,该类的处理过程如下:
1、配置其中result标签下的各个参数
2、从服务器中获取输入流,并同时与客户端建立输出流(服务器与客户端链接通过Socket进行连接)
3、当点击“保存”或“打开”时,开始传输数据。如果点击“取消”,关闭所有的流但是实际发现Socket并没有断开,并且流也没有关闭,所以在JSP容器通过Response获取输出流之前,前面的流并没有关闭,所以会造成该异常的报出
解决方法:
1、下载struts2-sunspoter-stream-1.0.jar,复制到WEB-INF/lib下
2、在原有的struts.xml的基础上进行相应的配置,如下:
<package name="e3itm" extends="struts-default">
<result-types>
<!-- 用于处理下载文件点击取消时报出异常问题 -->
<result-type name="streamx" class="com.sunspoter.lib.web.struts2.dispatcher.StreamResultX"></result-type>
</result-types><action name="download" class="com.DownloadAction">
<result name="success" type="streamx">
<param name="inputName">download</param>
<param name="bufferSize">4096</param>
<param name="contentDisposition">filename=""</param>
<param name="contentCharSet">UTF-8</param>
</result>
</action>
</package>
红色部分为添加的部分,并在原有的result中type改为“streamx”
如果是使用注解方式同样如下:
@Result(type="streamx", params={"inputName","inputStream","bufferSize","4096", "contentDisposition", "attachment;filename=\"${downloadFileName}\""})
修改之后执行取消,效果如下:
[WARN] StreamResultX Warn : socket write error
- Struts2下载文件点取消出现的异常java.lang.IllegalStateException 解决方案
- Struts2下载文件点取消出现的异常解决
- Struts2下载文件点取消出现的异常解决
- struts2 下载文件报 “java.lang.IllegalStateException”异常
- Struts2下载文件点取消、重复下载出现的异常解决
- 【Servlet+Struts2】文件下载时抛出java.lang.IllegalStateException异常的解决方法
- JSP下载打包文件及java.lang.IllegalStateException异常解决
- 关于struts2+hibernate3.2中出现的java.lang.ClassCastException: java.lang.Integer异常的解决方案
- spring出现java.lang.IllegalStateException异常的几种可能
- 使用jspsmartupload上传文件抛出的java.lang.IllegalStateException异常
- struts2 文件下载 异常的解决方案
- struts2 java.lang.IllegalStateException
- java.lang.IllegalStateException 异常
- 异常:java.lang.IllegalStateException
- java异常,java.lang.IllegalStateException,在进行JasperReports导出报表的时候出现的异常
- Struts2下载文件点击取消的异常处理
- java.lang.IllegalStateException异常的问题
- 我的异常java.lang.IllegalStateException
- Java中类的一些基本概念
- JAVA实现图片剪切缩放功能
- Wi-Fi速度慢的十个原因以及解决办法
- javascript range
- 阻塞与同步
- Struts2下载文件点取消出现的异常java.lang.IllegalStateException 解决方案
- uva 11795 洛克人的难题
- 还要调试。。。。。。。。
- thinking in java逍遥游记 之 夜的第八章 - 多态
- '\0'就是 字符串结束标志
- vector 结构体排序典型应用
- WebKit中的智能指针
- 事务的隔离级别和传播行为
- 第二次C程序设计上机报告