在生产环境中运行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)发布于 2012-10-18 17:38:42
答案A
HttpServlet有两个用于获取输出流的变体- response.getWriter()和response.getOutputStream()。在我们的例子中,我们使用uh.getResponse()来获取响应对象。
有几条规则-
可以使用这些方法中的一种。
2.选择的方法不能调用两次。
一旦你有了输出对象,不管你得到的是写入器还是输出流,一旦你关闭了它,你就不能再使用它,也不能再得到另一个。
简而言之,编写servlet输出是一次性操作。你从servlet获取对象,写出你的返回值。
答案B
我似乎还记得有一种情况,您正在写入输出,但随后错误处理程序开始处理异常,并且错误页面在创建进一步的输出时出现问题。任何用来处理错误的页面都必须有明确的errorpage标签(我记不起确切的标签了)。
回答C
一旦您向servlet的输出中写入了一些内容,就不能在不收到此错误的情况下转发到另一个页面。
https://stackoverflow.com/questions/12949549
复制相似问题