Cannot forward after response has been committed
来源:互联网 发布:淘宝用一键复制好吗 编辑:程序博客网 时间:2024/05/18 04:00
今天用servlet写了一个简单的小测试类,程序能正常的启动,服务也没有问题.
页面也能正常显示,但是就是后台报了一个:
java.lang.RuntimeException: java.lang.IllegalStateException: Cannot forward after response has been committed at com.test.servlet.BaseServlet.service(BaseServlet.java:53) at javax.servlet.http.HttpServlet.service(HttpServlet.java:728) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99) at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:953) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408) at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1023) at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589) at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:312) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) at java.lang.Thread.run(Thread.java:724)Caused by: java.lang.IllegalStateException: Cannot forward after response has been committed at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:349) at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:339) at com.test.servlet.BaseServlet.service(BaseServlet.java:50) ... 17 more
由翻译可知,这个错误就是:已经响应过了之后就不能在跳转了.
查看程序发现前面已经已经response过了,后面的return 又要跳转了,所以程序报了这样的一个错误!
public String find(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html"); PrintWriter out = response.getWriter(); out.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">"); out.println("<HTML>"); out.println(" <HEAD><TITLE>A Servlet</TITLE></HEAD>"); out.println(" <BODY>"); out.print(" This is "); out.print(this.getClass()); out.println(", using the GET method"); out.println(" </BODY>"); out.println("</HTML>"); out.flush(); out.close(); return "/index.jsp"; }
所以程序修改为下面的代码就不会再出现上面的问题了.
public String find(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html"); PrintWriter out = response.getWriter(); out.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">"); out.println("<HTML>"); out.println(" <HEAD><TITLE>A Servlet</TITLE></HEAD>"); out.println(" <BODY>"); out.print(" This is "); out.print(this.getClass()); out.println(", using the GET method"); out.println(" </BODY>"); out.println("</HTML>"); out.flush(); out.close(); return null; }
所以还是需要了解request和response的用法.
0 0
- Cannot forward after response has been committed
- Cannot forward after response has been committed
- Cannot forward after response has been committed
- Cannot forward after response has been committed
- Cannot forward after response has been committed
- Cannot forward after response has been committed
- Cannot forward after response has been committed
- Cannot forward after response has been committed
- Cannot forward after response has been committed
- Cannot forward after response has been committed
- Cannot forward after response has been committed
- Cannot forward after response has been committed
- Cannot forward after response has been committed
- Cannot forward after response has been committed
- Cannot forward after response has been committed
- Cannot forward after response has been committed
- Cannot forward after response has been committed
- Cannot forward after response has been committed
- Oracle PLSQL 学习笔记一
- Unity3d 必备的几种优秀的设计模式
- linux内核源码总览之0000--------备分,未整理,文件访问1
- java基础1-第一个程序
- MyBatis中实现动态的SQL语句、分页以及mybatis的常用的配置
- Cannot forward after response has been committed
- 分布式搜索elasticsearch配置文件详解
- SVN安装(Linux)
- 【Day32】mysql中事务的一些注意的地方
- Egret该怎样学?看看这几本入门书籍
- android去掉原生的状态栏的方法
- android6.0连接WIFI后显示“已连接,但无法访问互联网”实际可以上网
- Android内存优化分析
- Jenkins+Git+Xcode+fir MacOSx下最新最详细配置教程