严重: Servlet.service() for servlet default threw exception java.lang.IllegalStateException
整合SSH做的web文件下载;当用户点击下载按钮的时候,后台产生一个压缩文件,然后返回给客户端;这个压缩文件可以正常返回,但返回之后抛出如下异常,求解,分数不是问题,只要...
整合SSH做的web文件下载;当用户点击下载按钮的时候,后台产生一个压缩文件,然后返回给客户端;这个压缩文件可以正常返回,但返回之后抛出如下异常,求解,分数不是问题,只要能告诉我怎么解决,谢谢!
2009-8-11 14:19:31 org.apache.catalina.core.StandardWrapperValve invoke
严重: 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.ServletDispatcherResult.doExecute(ServletDispatcherResult.java:127)
at org.apache.struts2.dispatcher.StrutsResultSupport.execute(StrutsResultSupport.java:178)
at com.opensymphony.xwork2.DefaultActionInvocation.executeResult(DefaultActionInvocation.java:348)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:253)
at com.opensymphony.xwork2.interceptor.DefaultWorkflowInterceptor.doIntercept(DefaultWorkflowInterceptor.java:221)
at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:86)
at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224)
at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223)
at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221)
at com.opensymphony.xwork2.validator.ValidationInterceptor.doIntercept(ValidationInterceptor.java:150)
at org.apache.struts2.interceptor.validation.AnnotationValidationInterceptor.doIntercept(AnnotationValidationInterceptor.java:48)
at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:86)
at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224)
at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223)
at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221)
at com.opensymphony.xwork2.interceptor.ConversionErrorInterceptor.intercept(ConversionErrorInterceptor.java:123)
at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224)
at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223)
at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221)
at com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:184)
at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:86)
......
百度不给我输太长...无奈...
当然不是啦,我完全没用到那个方法
百度限制字数,代码核心部分都粘不全,不是jsp/form/JDBC的问题...
增加一个空行???什么意思?
ServletOutputStream so = response.getOutputStream();
你所指的out是不是我这里的so??是的话,它好像没有clear这个方法啊
我想问一下,那个out哪里来的??没定义啊??
再次说明一下,我这个是在类里获取的response,与JSP页面无关!!!那些随便拷贝的东西,我也找得到,不用辛苦你们拷贝过来
说真的,我是不懂Servlet的原理,所以我还想问一下,PrintWriter out = response.getWriter();这个out怎么没有你所说的clear()方法? 展开
2009-8-11 14:19:31 org.apache.catalina.core.StandardWrapperValve invoke
严重: 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.ServletDispatcherResult.doExecute(ServletDispatcherResult.java:127)
at org.apache.struts2.dispatcher.StrutsResultSupport.execute(StrutsResultSupport.java:178)
at com.opensymphony.xwork2.DefaultActionInvocation.executeResult(DefaultActionInvocation.java:348)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:253)
at com.opensymphony.xwork2.interceptor.DefaultWorkflowInterceptor.doIntercept(DefaultWorkflowInterceptor.java:221)
at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:86)
at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224)
at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223)
at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221)
at com.opensymphony.xwork2.validator.ValidationInterceptor.doIntercept(ValidationInterceptor.java:150)
at org.apache.struts2.interceptor.validation.AnnotationValidationInterceptor.doIntercept(AnnotationValidationInterceptor.java:48)
at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:86)
at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224)
at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223)
at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221)
at com.opensymphony.xwork2.interceptor.ConversionErrorInterceptor.intercept(ConversionErrorInterceptor.java:123)
at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224)
at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223)
at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221)
at com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:184)
at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:86)
......
百度不给我输太长...无奈...
当然不是啦,我完全没用到那个方法
百度限制字数,代码核心部分都粘不全,不是jsp/form/JDBC的问题...
增加一个空行???什么意思?
ServletOutputStream so = response.getOutputStream();
你所指的out是不是我这里的so??是的话,它好像没有clear这个方法啊
我想问一下,那个out哪里来的??没定义啊??
再次说明一下,我这个是在类里获取的response,与JSP页面无关!!!那些随便拷贝的东西,我也找得到,不用辛苦你们拷贝过来
说真的,我是不懂Servlet的原理,所以我还想问一下,PrintWriter out = response.getWriter();这个out怎么没有你所说的clear()方法? 展开
5个回答
展开全部
可以把你的代码发一部分吗?
看错误有时候是看不出来的
另外你在struts的配置文件中设置了上传、下载文件的大小了吗?
看了看资料,发现你可能是这里出了问题
1.servlet或jsp中,重复调用response的 getOutputStream(),response.getWriter()方法
2.form表单里没有 method="post" action=""参数
3.看JDBC操纵数据库的代码,仔细看,例如调用的对象的属性为null。
Connection conn=null; 之后之就调用了conn.??的方法
另外从网上找了找解决方法,希望能帮助你的忙
如果产生了这个类org.apache.catalina.core.StandardWrapperValve提示错误的话,可能是因为你添加了一些包文件
最简单的办法是:把tomcat关于此工程的文档删除,之后呢,重新启动工程server即可搞定啦
看错误有时候是看不出来的
另外你在struts的配置文件中设置了上传、下载文件的大小了吗?
看了看资料,发现你可能是这里出了问题
1.servlet或jsp中,重复调用response的 getOutputStream(),response.getWriter()方法
2.form表单里没有 method="post" action=""参数
3.看JDBC操纵数据库的代码,仔细看,例如调用的对象的属性为null。
Connection conn=null; 之后之就调用了conn.??的方法
另外从网上找了找解决方法,希望能帮助你的忙
如果产生了这个类org.apache.catalina.core.StandardWrapperValve提示错误的话,可能是因为你添加了一些包文件
最简单的办法是:把tomcat关于此工程的文档删除,之后呢,重新启动工程server即可搞定啦
展开全部
是不是在response.sendRedirect()方法没写return?如果没写的话会出现这个问题。
如:
response.sendRedirect("index.jsp");
return;
-----------------
如果没用 以上的东西的话。 我猜你是把文件读成字节流写到客户端去的。。
代码是不是类似这样的?
FileInputStream f =new FileInputStream (new File("d:\\mydiv.rar"));
byte[] fb;
try {
fb = new byte[f.available()];
f.read(fb);
response.setHeader("Content-disposition","attachment; filename=mydiv.rar");
ByteArrayInputStream bais = new ByteArrayInputStream(fb);
int b;
while ((b = bais.read()) != -1) {
response.getOutputStream().write(b);
}
response.getOutputStream().flush();
out.clear();//注意加这个
out = pageContext.pushBody();//注意加这个
} catch (IOException e) {
e.printStackTrace();
}
因为在编译成字节码文件后代码里调用了response.getWriter().而这个方法是和
response.getOutputStream()是相冲突的!
加上out.clear();
out = pageContext.pushBody();
后就可以解决这个问题。
---------------- I 服了 you
ServletOutputStream so = response.getOutputStream(); 你如果用了这个,那么 out会出问题。 你没用out不代表servlet不会去用out.所以你先获取out PrintWriter out = response.getWriter();
然后out.clear();out = pageContext.pushBody();
居然不知道out是什么东西。。 额。。
如:
response.sendRedirect("index.jsp");
return;
-----------------
如果没用 以上的东西的话。 我猜你是把文件读成字节流写到客户端去的。。
代码是不是类似这样的?
FileInputStream f =new FileInputStream (new File("d:\\mydiv.rar"));
byte[] fb;
try {
fb = new byte[f.available()];
f.read(fb);
response.setHeader("Content-disposition","attachment; filename=mydiv.rar");
ByteArrayInputStream bais = new ByteArrayInputStream(fb);
int b;
while ((b = bais.read()) != -1) {
response.getOutputStream().write(b);
}
response.getOutputStream().flush();
out.clear();//注意加这个
out = pageContext.pushBody();//注意加这个
} catch (IOException e) {
e.printStackTrace();
}
因为在编译成字节码文件后代码里调用了response.getWriter().而这个方法是和
response.getOutputStream()是相冲突的!
加上out.clear();
out = pageContext.pushBody();
后就可以解决这个问题。
---------------- I 服了 you
ServletOutputStream so = response.getOutputStream(); 你如果用了这个,那么 out会出问题。 你没用out不代表servlet不会去用out.所以你先获取out PrintWriter out = response.getWriter();
然后out.clear();out = pageContext.pushBody();
居然不知道out是什么东西。。 额。。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这是web容器生成的servlet代码中有out.write(””),这个和JSP中调用的response.getOutputStream()产生冲突.
即Servlet规范说明,不能既调用 response.getOutputStream(),又调用response.getWriter(),无论先调用哪一个,在调用第二个时候应会抛出 因为在jsp中,out变量是通过response.getWriter得到的,在程序中既用了response.getOutputStream,又用了out变量,故出现以上错误。
解决方案:
out.clear();
out = pageContext.pushBody();
就可以了;
即Servlet规范说明,不能既调用 response.getOutputStream(),又调用response.getWriter(),无论先调用哪一个,在调用第二个时候应会抛出 因为在jsp中,out变量是通过response.getWriter得到的,在程序中既用了response.getOutputStream,又用了out变量,故出现以上错误。
解决方案:
out.clear();
out = pageContext.pushBody();
就可以了;
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
其实没什么事情,只是你的压缩文件写入response后,又重新向流里写入了其他数据。这是流已关闭,会出现IlleagalState错误,懒得该的话就不改。
改法要看你的代码,比如多了一个空行之类的。
改法要看你的代码,比如多了一个空行之类的。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
给遇到这个问题的朋友提供一点思绪,有可能是sql语句错误导致持久化失败造成的。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询