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");
    		}
    	%>
    
  • 相关阅读:
    关于垂直居中
    linux 前后台程序切换
    mac 下jetbrains IDE系列IDE主题
    mac 安装命令行开发者工具
    python 安装MySQLdb mysql_config not fount
    error: command 'cc' failed with exit status 1
    sqllite 入门
    jieba分词
    zookeeper 故障重连机制
    深入学习 celery
  • 原文地址:https://www.cnblogs.com/annofyf/p/9494548.html
Copyright © 2011-2022 走看看