分类: Java
2009-05-16 13:50:17
java.lang.IllegalStateException: Cannot forward after response has been committed
com.AppendDevice.doGet(AppendDevice.java:35)
com.AppendDevice.doPost(AppendDevice.java:41)
javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
上网搜索一下:
jsp默认的buffer是8kb,当我们的输出超过8kb时,就会发生IllegalStateException。在response完成之前,
buffer已经溢出了。
解决方法是修改默认值:<%@ page buffer="16kb" %>
(参考
http://devpinoy.org/blogs/lamia/archive/2006/09/05/
java.lang.IllegalStateException_3A00_-Cannot-forward-after-response-has-been-committed.aspx)
另一种解析:
由于response多次提交或者是由于有页面显示后仍然含请求转向产生的,就是说程序在return之前就已经
执行了跳转或者执行过response,之后遇到return的话,程序想再次执行跳转,也就是重定向,这时功能
也许会实现了,但是控制台会报错,所以控制好跳转是很重要的。
解决方法:
rd.forward(request, response);
return;