1

在生产环境中运行 ToolTwist 应用程序时出现这些错误。这似乎经常发生。可能导致这些堆栈跟踪的代码错误有哪些?

2012-02-13 11:00:04,242 ERROR ServletUiModule - Error in Servlet tooltwist.ecommerce.RoutingUIM.doPost():
java.lang.IllegalStateException: Cannot forward after response has been committed
        at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:312)
        at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:302)
4

1 回答 1

1

回答
HttpServlet 有两种获取输出流的变体——response.getWriter() 和 response.getOutputStream()。在我们的例子中,我们使用 uh.getResponse() 来获取响应对象。

几条规则——

   1. 可以使用其中一种方法。

   2. 选择的方法不能被调用两次。

   3. 一旦你有了输出对象,不管你有一个作家还是一个输出流,一旦你关闭它,你就不能再次使用它,也不能再得到另一个。

简而言之,编写 servlet 输出是一次性操作。你得到对象,你写,你从 servlet 返回。

回答 B
我似乎记得也可能存在这样一种情况,即您正在写入输出,但随后错误处理程序开始处理异常,并且错误页面在创建进一步输出时出现问题。任何用于处理错误的页面都必须特别具有 errorpage 标签(我不记得确切的标签)。

答案 C
一旦你在 servlet 的输出中写了一些东西,你就不能在没有这个错误的情况下转发到另一个页面。

于 2012-10-18T09:38:42.350 回答