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