<% 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"); } %>