我在生产中运行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)
答案 0 :(得分:1)
答案A HttpServlet有两种用于获取输出流的变体 - response.getWriter()和response.getOutputStream()。在我们的例子中,我们使用uh.getResponse()来获取响应对象。
一些规则 -
1.可以使用其中一种方法。
2.所选方法不能被调用两次。
3.一旦有了输出对象,无论你是否有作家或输出流,一旦你关闭它,就不能再使用它了,也不能再使用它。
简而言之,编写servlet输出是一次性操作。你从servlet那里得到了你写的对象。
答案B
我似乎记得可能还有一种情况是您正在写入输出,但随后错误处理程序开始处理异常,并且错误页面在创建进一步输出时出现问题。用于处理错误的任何页面都必须具有errorpage标记(我不记得该标记)。
答案C
一旦你向servlet的输出写了一些内容,就不能在没有出现这个错误的情况下转发到另一个页面。