0 0

java.lang.IllegalStateException5

public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
PrintWriter out = response.getWriter();
out.println("sssss");
out.close();
response.sendRedirect("index.jsp");
return;
}

这是servlet中的代码
运行时出现了
严重: Servlet.service() for servlet TestServlet threw exception
java.lang.IllegalStateException
at org.apache.catalina.connector.ResponseFacade.sendRedirect(ResponseFacade.java:435)
at TestServlet.doPost(TestServlet.java:57)
at TestServlet.doGet(TestServlet.java:39)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
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:127)
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:298)
at org.apache.coyote.http11.Http11AprProcessor.process(Http11AprProcessor.java:861)
at org.apache.coyote.http11.Http11AprProtocol$Http11ConnectionHandler.process(Http11AprProtocol.java:579)
at org.apache.tomcat.util.net.AprEndpoint$Worker.run(AprEndpoint.java:1584)
at java.lang.Thread.run(Unknown Source)
这个错误,请各路大神帮忙看看.

 
2012年1月18日 10:28

4个答案 按时间排序 按投票排序

0 0

根据servlet 3.0规范5.3节
"如果数据已经被写入response buffer,但还没有返回到客户端(比如response还没提交),则response buffer中的数据必须被清除并且由这些方法指定的数据代替.
如果response已经被提交,则这些方法必须抛出IllegalStateException."

其中"这些方法"指的就是sendRedirect和sendError.
"这些方法指定的数据"指的是传递给sendRedirect或sendError的参数
----------
out.close(); 会提交response, 所以再调用sendRedirect会出错

2012年1月19日 11:34
0 0

不能调用,out.close();

sendRedirect 最终也要用out输出一段html头

2012年1月18日 17:01
0 0

你到底要转向还是?AJAX 让后台输出东西啊?

我觉得你2者去掉一个就OK,试试看吧?

2012年1月18日 15:48
0 0

PrintWriter out = response.getWriter();
out.println("sssss");
out.close();
response.sendRedirect("index.jsp");

response 和 PrintWriter  可以一起用?

2012年1月18日 15:47

相关推荐

Global site tag (gtag.js) - Google Analytics