java.lang.IllegalStateException: Cannot forward after response has been committed

11 篇文章 0 订阅
7 篇文章 0 订阅
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)

    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);

 }





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值