我想知道用户是否有3次登录失败,然后会出现Help
链接。
所以我需要在会话中存储一些值,并在每次用户登录时检查其值(称为tryTimes
):
我在doLogin
servlet中的代码:
if (logedInSuccessfully()) { // OK
//create session and add sum attributes
response.sendRedirect("Home.jsp");
} else {
int i = 0;
HttpSession session = request.getSession(true);
session.setAttribute("existsInDB", "No");
session.setAttribute("tryTimes", ++i);
response.sendRedirect("Login.jsp"); // back to log in page again
}
在Login.jsp
页面中:
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<title> Login Page </title>
</head>
<body>
<%
int tryTimes = 0;
if (String.valueOf(session.getAttribute("existsInDB")).equalsIgnoreCase("No")) {
JOptionPane.showMessageDialog(null, "No: " + session.getAttribute("tryTimes"));
if (tryTimes >= 3) {
%>
<a href="LoginHelp.jsp"> <font color="white"> Need Help? </font> </a>
<%
}
}
%>
...
//End of page
但是,当我测试i
的值时,它总是1
而根本没有变化。
m代码有什么问题?
答案 0 :(得分:4)
因为你每次都放1
,你需要读取它的值,然后递增
更改
int i = 0;
到
int i = Integer.parseInt(session.getAttribute("tryTimes") == null ? "0" : session.getAttribute("tryTimes"));
然后在JSP上你有JOptionPane
没有任何意义,你需要为它生成HTML
同样在JSP上,您不会将会话属性读入tryTimes