5

userLoggedIn を確認して使用して状態を証明するにはどうすればよいですか。私は新しく、たくさん検索しています。ばかげた間違いがあるに違いない。

index.jsp

<div id="sign-in">
    <c:choose> 
        <c:when test="${userLoggedIn == 1}"> 
             Welcome <c:out value="${loginID}" /> | Logout
        </c:when>
        <c:otherwise>Log-in</c:otherwise>
    </c:choose>
</div>

いくつかの検証サーブレット

int userLoggedIn = 0;

if(loginID.equals("guest@guest.com") && password.equals("guest")){
    userLoggedIn = 1;
    getServletContext().getRequestDispatcher("/index.jsp").forward(request, response);
    //     out.println("login successful");

} else {
    //   getServletContext().getRequestDispatcher("/login.jsp").forward(request, response);
    out.println("login failed");
}
4

1 に答える 1

7

必要なスコープに情報を保存する必要があります。これは通常、ログインしているユーザーの場合のセッション スコープです。

の後 に次の行を追加しますuserLoggedIn = 1;

request.getSession().setAttribute("userLoggedIn", userLoggedIn);

基本的に変更する必要があるのはそれだけです。


具体的な問題とは関係ありませんが、このint(そしてBevynQbooleanがコメントしたように) アプローチはむしろ「原始的」です。User通常は、代わりに DB から取得したエンティティ全体をセッションに格納します。例えば

User user = userService.find(username, password);

if (user != null) {
    request.getSession().setAttribute("user", user);
    response.sendRedirect("home");
} else {
    request.setAttribute("message", "Unknown login, please try again");
    request.getRequestDispatcher("/WEB-INF/login.jsp").forward(request, response);
}

<c:when test="${not empty user}">

次のようなすべてのプロパティに簡単にアクセスできます

<p>Welcome, <c:out value="${user.name}" /></p>
于 2012-12-27T20:25:27.367 に答える