java写的excel导出时抛出的异常
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java写的excel导出时抛出的异常相关的知识,希望对你有一定的参考价值。
严重: Servlet.service() for servlet default threw exception
java.lang.IllegalStateException
at org.apache.catalina.connector.ResponseFacade.sendError(ResponseFacade.java:407)
at org.apache.struts2.dispatcher.Dispatcher.sendError(Dispatcher.java:725)
at org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:485)
at org.apache.struts2.dispatcher.FilterDispatcher.doFilter(FilterDispatcher.java:395)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:845)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
at java.lang.Thread.run(Thread.java:662)
我估计是这样的两次跳转,不是action里面的问题:
说下大致流程:首先通过secListAction跳转到一个list页面,然后在这个页面我加了模糊查询和导出excel按钮,在一个form里面,两个按钮分别调用两个JS方法,用的都是window.location.href。
应该就是执行完导出excel的action后又执行secListAction的action,因为我发现点击导出按钮之后,list显示的结果也发生了变化。 可是为什么会执行这个查询呢?
怎样才能让导出excel的同时不刷新页面
java.lang.IllegalStateException
org.apache.catalina.connector.ResponseFacade.sendRedirect(ResponseFacade.java:423)
经过分析、查看jdk文档终于找到解决的办法,在response.sendRedirect()方法后加return语句即可,如下:
response.sendRedirect("login.jsp");
return null;
原因是:在程序中两次调用了response.sendRedirect()方法。
jdk5.0文档中很清楚地介绍了出现IllegalStateException异常的可能情况:
1)同一个页面中再次调用response.sendRedirect()方法。
2)提交的URL错误,即不是个有效的URL。追问
我这个是ResponseFacade.sendError(), 所以应该不是sendRedirect()这个解决办法。
抛出异常是action全部执行完毕之后抛出的。
我的acition跳转是在JS里面直接这样写的:
window.location.href="exptAeCust.action?fileName=XXX“
public void sendError(int sc)
throws IOException
if(isCommitted())
throw new IllegalStateException();
else
response.setAppCommitted(true);
response.sendError(sc);
return;
这是ResponseFacade的源码,报错说明你在在action return之前做了跳转处理。
Dispather类中
sendError(request, response, context, 404, e);
sendError(request, response, context, 500, e);
时导致错误的原因:可能是你的地址配置有误。或者因为你有两次跳转,第一次跳转的资源不存在,所以先报404,然后sendErr时,又因为已经提交了响应,所以报
IllegalStateException的异常,你把你的action代码贴出来看看
异常库
java.io.FileNotFoundException操作文件流时,文件不存在抛出
java.lang.ArithMeticException当算术出现错误时抛出
java.lang.NullPointerException当使用值为空的变量去调用属性或者方法时抛出
java.lang.ArrayIndexOutOfBoundsException下标越界异常,当使用数组元素时使用了非法下标时抛出
java.lang.NumberFomatException将字符串转化为数字类型时,该字符串不是数字字符串
java.awt.IllegalComponentStateException当AWT组件未处于所请求操作的适当状态时,抛出该异常
java.util.regex.PatternSyntaxException抛出未经检查的异常,表明正则表达式模式中的语法错误
java.lang.ClassNotFoundException类没有找到异常,加载类时,如果该类的全路径书写不正确时抛出
java.lang.IllegalArgumentException参数错误异常,向某个方法传递了不合法的参数时抛出
java.sql.SQLException连接数据库时,URL书写错误
以上是关于java写的excel导出时抛出的异常的主要内容,如果未能解决你的问题,请参考以下文章