重定向到页面时出现问题

时间:2011-04-25 11:22:20

标签: java java-ee

我正在开发一个Web应用程序。

我写了一个jsp,servlet和一个bean。在将记录成功插入数据库时​​,我希望重新连接到新页面,但response.sendredirect()报告错误。

错误

服务器遇到内部错误(),导致无法完成此请求。

例外:

java.lang.IllegalStateException
    org.apache.catalina.connector.ResponseFacade.sendRedirect(ResponseFacade.java:435)
    javax.servlet.http.HttpServletResponseWrapper.sendRedirect(HttpServletResponseWrapper.java:126)
    allotmant.seatAllot.processRequest(seatAllot.java:104)
    allotmant.seatAllot.doGet(seatAllot.java:134)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:390)

注意: Apache Tomcat / 6.0.20日志中提供了根本原因的完整堆栈跟踪。

什么是可能的解决方案?

2 个答案:

答案 0 :(得分:1)

我认为在提交响应标头后你无法发送重定向。重定向时,标头必须包含重定向操作。但是如果你已经发送了一些正文内容,则会提交标题。

所以也许你在重定向之前发送正文内容(或者手动提交标题)。

答案 1 :(得分:1)

确保您:

  1. 在页面中尽早执行重定向。如果在页面中为时已晚,则响应标头将已提交到流。它只在开始发送到客户端之前缓冲这么多字节,通常为8k。
  2. 执行sendRedirect()后,立即停止处理页面的其余部分。出于与#1相同的原因,如果你让页面的其余部分呈现它,它可以填满响应缓冲区。在return之后立即调用sendRedirect()来结束您的servlet,JSP等。