2012-2-26 23:18:21 org.apache.catalina.core.StandardWrapperValve invoke
严重: Servlet.service() for servlet LoginAction 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 com.avonaco.test.action.LoginAction.doPost(LoginAction.java:119)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
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 com.avonaco.test.filter.WebResponseTime.doFilter(WebResponseTime.java:42)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at com.avonaco.test.filter.CharacterEncoding.doFilter(CharacterEncoding.java:24)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
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:127)
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:291)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:859)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:602)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
严重: Servlet.service() for servlet LoginAction 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 com.avonaco.test.action.LoginAction.doPost(LoginAction.java:119)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
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 com.avonaco.test.filter.WebResponseTime.doFilter(WebResponseTime.java:42)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at com.avonaco.test.filter.CharacterEncoding.doFilter(CharacterEncoding.java:24)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
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:127)
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:291)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:859)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:602)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
at java.lang.Thread.run(Unknown Source)
这个错误是说 在你之前跳转动作之前已经有一个被执行了...
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { HttpSession session = request.getSession(); //server token String sessionToken = (String) session.getAttribute(Constant.SESSION_TOKEN); //client token String requestToken = request.getParameter(Constant.REQUEST_TOKEN); //请求参数 String action = request.getParameter("action"); //用户登录标记 String sessionid_flag = (String)session.getAttribute("sessionid_flag"); String path = "index.jsp"; // 验证token是否为非法提交 if ( StringUtil.checkToken(sessionToken, requestToken) && !StringUtil.isEmpty(action)){ //用户页面显示action session.setAttribute("actionresult", action); Map<Object,Object> map = new LinkedHashMap<Object,Object>(); User user = new User() ; if( action.equals(Constant.TM_Register)){ //注册 String userphone = request.getParameter("user_phone"); String user_email = request.getParameter("user_email"); if ( !StringUtil.isTrim( userphone ) ){ if ( user_email == null || user_email.equals("")){ user_email= ""; } user.setUser_phone(userphone); user.setUser_email(user_email); map = UserURLFactory.getIUserUrl().register(action, user); } path = "ManagerAction"; }else if( action.equals(Constant.TM_Login)){ //登录 String username = request.getParameter("user_phone"); String password = request.getParameter("user_password"); String sub_version = request.getParameter("sub_version"); if ( sub_version == null || sub_version.trim().equals("") ){ sub_version = StringUtil.Random(); } if ( !StringUtil.isTrim( username , password , sub_version ) ){ user.setUser_phone(username); user.setUser_password(password); user.setSub_version(sub_version); map = UserURLFactory.getIUserUrl().login(action, user); //登录成功则保存session_id if( map != null && map.containsKey("session_id")){ String sessionid = (String)map.get("session_id"); session.setAttribute("session_id", sessionid); session.setAttribute("session_id", map.get("user_role")); path = "main.html"; }else{ request.setAttribute("login_err", "登录失败! 账户名或则密码错误"); path = "index.jsp"; } } }else{ //如果没有符合的action则跳到登陆页面 path = "error.jsp"; } //获取server返回的return_code if ( map != null && map.containsKey("return_code" ) ){ String return_code = (String) map.get("return_code"); if ( (return_code.equals("200") || return_code.equals("201") )){ flag++; } }else{ flag++; } session.setAttribute("resultMap", map); request.getRequestDispatcher(path).forward(request, response); }else{ //在这里以上的跳转动作已经被执行过了 所以当执行到下面的跳转动作会报错的 request.getRequestDispatcher(path).forward(request, response); } //我是这里报错 因为之前已经执行过一次跳转动作了
request.getRequestDispatcher(path).forward(request, response);
}