不知道为什么,在写servlet的时候总是出现标题这样的错误,
2009-10-8 20:26:11 org.apache.catalina.core.StandardWrapperValve invoke
严重: Servlet.service() for servlet CommonReceiveParamterServlet threw exception
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)
at edu.bjtu.newBean.servlet.CommonReceiveParamterServlet.doPost(CommonReceiveParamterServlet.java:345)
at edu.bjtu.newBean.servlet.CommonReceiveParamterServlet.doGet(CommonReceiveParamterServlet.java:36)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:849)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:454)
at java.lang.Thread.run(Thread.java:619)
代码是这样的:
List<Map<String,Object>> orderlist = new ArrayList<Map<String,Object>>();
procedure ="{call SCOTT.processed_total(?)}";
DBUtils dbUtils = new DBUtils();
try {
orderlist = dbUtils.executeProcedureWithOutInputParamter(procedure);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}//orderlist用来判断结果集是不是为空!
if(orderlist.size()==0){
request.setAttribute("error","noJgcpGN"); request.getRequestDispatcher("err/noData.jsp").forward(request, response);
}
request.setAttribute("orderlist", orderlist);
request.getRequestDispatcher("jgcp/jgcp/jgcpGN.jsp").forward(request, response);
就是上述代码,因为对request转发不明白真正的含义引起的,本来以为request.getRequestDispatcher("err/noData.jsp").forward(request, response);后就跳出来servlet,没想到还是会执行下面这一段代码,太大意了,后来debug的时候才看到,
request.setAttribute("orderlist", orderlist);
request.getRequestDispatcher("jgcp/jgcp/jgcpGN.jsp").forward(request, response);
把代码最后加上
else{request.setAttribute("orderlist", orderlist);
request.getRequestDispatcher("jgcp/jgcp/jgcpGN.jsp").forward(request, response);
}
就不会出现这个问题了!
最后的代码为:
List<Map<String,Object>> orderlist = new ArrayList<Map<String,Object>>();
procedure ="{call SCOTT.processed_total(?)}";
DBUtils dbUtils = new DBUtils();
try {
orderlist = dbUtils.executeProcedureWithOutInputParamter(procedure);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
if(orderlist.size()==0){
request.setAttribute("error", "noJgcpGN");
request.getRequestDispatcher("err/noData.jsp").forward(request, response);
}else{
request.setAttribute("orderlist", orderlist);
request.getRequestDispatcher("jgcp/jgcp/jgcpGN.jsp").forward(request, response);
}
问题解决!
分享到:
相关推荐
"Cannot forward after response has been committed" 是一个在Java Web开发中常见的错误,通常与Servlet、Filter或控制器逻辑有关。这个错误表明服务器已经完成了对HTTP响应的处理,并将其发送到客户端,然后试图...
使用@SessionAttributes 和@ResponseBody 或者@RestController 注解配合使用时,可能会报 Cannot create a session after the response has been committed 错误。解决方法是在 return 之前自己创建 session。 本...
prerequisite patches in an unstable way, which has been updated to compute in a way that is compatible with "git patch-id --stable". * The "git log" command by default behaves as if the --mailmap ...
java.lang.IllegalStateException: Can't sendRedirect() after data has been committed to the client. ``` 解决办法是在进行任何输出之前先检查是否需要重定向。 #### 二、`response.setHeader("Location", "")`...
These dummy transactions get committed when everything is idle (after there has been some activity).
`resetBuffer()`可以清空缓冲区,`isCommitted()`检查是否已提交响应。 9. **关闭响应** 一旦响应被提交,就不能更改。但可以通过`reset()`来清除所有设置,使响应回到初始状态。然而,一旦客户端开始接收数据,就...
Section=ResponseHeader Detail=CR 后面必须是 LF The server committed a protocol violation. Section=ResponseHeader Detail=CR must be followed by LF 主体意思是微软没有容忍不符合RFC 822...
"Committed" 在这里很可能是指 PostgreSQL 的事务隔离级别之一——读已提交(Read Committed)。 在 PostgreSQL 中,事务隔离级别是数据库系统为确保并发事务正确执行而设定的一系列规则。以下是四种标准的事务隔离...
**ORA-17030**:READ_COMMITTED 和 SERIALIZABLE 隔离级别不支持错误,当尝试使用不支持的隔离级别时触发。 **ORA-17031**:自动关闭设置错误,可能是因为尝试设置自动关闭选项时出现问题。 **ORA-17032**:查询...
例如,当你发现某个错误并想要回滚到某个已知的正常版本时,可以使用PREV和COMMITTED来确定问题出现的时间点。同时,BASE和HEAD用于保持你的工作副本与远程仓库同步,确保你始终在处理最新的代码。 在实际开发中,...
在读取文件并写入输出流的过程中,我们检查`ServletResponse`是否已提交(`isCommitted()`)以及`ServletOutputStream`是否已被关闭(`isClosed()`)。如果任一条件满足,就立即跳出循环,避免不必要的数据传输和...
Oracle错误代码集合是Oracle数据库管理员和技术人员解决问题的重要参考。 根据提供的文件内容,我们可以看到一系列以ORA-开头的错误代码。这些错误代码是Oracle系统返回的特定代码,它们通常带有错误信息,能够指出...
在探讨数据库事务隔离级别时,Read Committed(简称RC)是一个重要的概念。RC隔离级别意味着,当事务运行期间,如果别的事务对数据进行修改并且提交了,当前事务是可以读取到这些修改后的数据的。然而,这也导致了不...
Response already committed. 的异常。解决方法是升级到 6.1.0.17 版本。 9. 修改 Websphere 的 JSP 编译 JDK 版本 修改 Websphere 的 JSP 编译 JDK 版本可以解决一些问题。修改方法是,找到发布之后的应用目录,...
本文提出的新方法为证明承诺数字位于特定区间提供了一个高效且精确的解决方案。这一成果不仅在理论层面具有重要价值,而且在实践中也有着广阔的应用前景,特别是在信息安全、加密技术和隐私保护等领域。随着技术的...
Number of committers has been determined by going through CVS logs from January 1st, 2004 to December 31st, 2004 and contributors by going through the list of contributions and problem reports. ...
`response.isCommitted()`方法用来检查是否已经将数据发送到客户端。 【服务端重定向】 重定向分为以下三种方式: 1. **使用`response.sendRedirect()`**:此方法修改HTTP响应头,告诉浏览器加载新的URL,实现...
Read Committed(读已提交)是常见的隔离级别之一,它确保一个事务只能看到其他已经提交的事务的结果,而忽略未提交的更改。在MySQL等关系型数据库管理系统中,Read Committed级别的实现依赖于一种称为ReadView的...
5. **优化事务设计**:避免长时间运行的事务,或者减少不必要的锁定,例如通过更精细的事务粒度或使用读已提交(READ COMMITTED)隔离级别。 6. **使用闪回功能**:如果数据删除是误操作,可以使用Oracle的闪回功能...