zoukankan      html  css  js  c++  java
  • Cannot call sendRedirect() after the response has been committed解决方法

    <%		
    		JudgeName judge = new JudgeName();
    
    		request.setCharacterEncoding("utf-8");
    		String name = request.getParameter("userName");
    		if (name != null) {
    			session.setAttribute("name", name);
    			session.setMaxInactiveInterval(30);
    		} else {
    			response.sendRedirect("index.jsp");
    			/* return; */
    		}
    		String pwd = request.getParameter("pwd");
    
    		if (judge.isExists(name)) {
    
    			if (pwd.equals("12345")) {
    				response.sendRedirect("succeed.jsp");
    				/*return;*/
    			} else {
    				session.setAttribute("msg", "密码错误");
    				response.sendRedirect("failed.jsp");
    				/*return;*/
    			}
    
    		} else {
    			session.setAttribute("msg", "用户名不存在");
    			response.sendRedirect("failed.jsp");
                  /*return;*/ } %>

    该页面主要实现的功能是对request的数据进行对比判断,由form表单进入该页面并不会出错,但是由于逻辑混乱导致直接进入页面时会发生两次response的重定向,所以报错

    逻辑上的错误导致response可能被执行两次,两种解决方案:

    1.修改逻辑

    2.在response后加return;

    3.但是不能再最后一个response后添加return;否则报错:

    以下为修改后的代码:

    <%
    		JudgeName judge = new JudgeName();
    		request.setCharacterEncoding("utf-8");
    		String name = request.getParameter("userName");
    		String pwd = request.getParameter("pwd");
    
    		if (name != null && pwd != null) {
    			session.setAttribute("name", name);
    			session.setMaxInactiveInterval(30);
    			
    			if (judge.isExists(name)) {
    				if (pwd.equals("12345")) {
    					response.sendRedirect("succeed.jsp");
    					
    				} else {
    					session.setAttribute("msg", "密码错误");
    					response.sendRedirect("failed.jsp");
    				}
    				
    			} else {
    				session.setAttribute("msg", "用户名不存在");
    				response.sendRedirect("failed.jsp");
    			}
    
    		} else {
    			response.sendRedirect("index.jsp");
    		}
    	%>
    
  • 相关阅读:
    php 小试 mysql-zmq-plugin 和 pthreads
    svn:previous operation has not finished
    Http Header里的Content-Type
    sublime text使用及常见问题
    Less:优雅的写CSS代码
    gulp:更简单的自动化构建工具
    js实现『加载更多』功能实例
    JSONP浅析
    使用JSSDK集成微信分享遇到的一些坑
    JavaScript模板引擎实例应用
  • 原文地址:https://www.cnblogs.com/annofyf/p/9494548.html
Copyright © 2011-2022 走看看