增加会话值

时间:2014-12-30 18:19:55

标签: java html jsp session

我想知道用户是否有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代码有什么问题?

1 个答案:

答案 0 :(得分:4)

因为你每次都放1,你需要读取它的值,然后递增

更改

int i = 0;

int i = Integer.parseInt(session.getAttribute("tryTimes") == null ? "0" : session.getAttribute("tryTimes"));

然后在JSP上你有JOptionPane没有任何意义,你需要为它生成HTML

同样在JSP上,您不会将会话属性读入tryTimes