2012-12-27 23 views
5

の場合userLoggedInをチェックして使用して状態を証言する方法を教えてください。 私は新しく、検索がたくさんあります。愚かな間違いがなければなりません。JSTLとc:テスト条件が

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("[email protected]") && 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"); 
} 
+0

のようなすべてのプロパティの容易なアクセスを可能にします

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

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

? –

+1

なぜuserLoggedInはブール値ではありませんか? – BevynQ

答えて

7

あなたが通常の場合のセッションスコープで必要な範囲の情報を格納する必要がログインしているユーザー。

userLoggedIn = 1;の後に追加します。

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

これは基本的に変更する必要があります。具体的な問題とは無関係


、アプローチ(AS BevynQによってコメントとboolean)このintはむしろ "原始的" です。通常は、セッションのDBから取得したUserエンティティ全体を格納します。例えば。問題は何

<p>Welcome, <c:out value="${user.name}" /></p> 
+0

また、JSTLで次のようにアクセスする必要があります。 - '$ {sessionScope.userLoggedIn}' –

+2

@Rohit:これは不要です。純粋なJSP/Servletチュートリアルを読んでください。このアプローチは、ページやリクエストのスコープに同じ属性が存在する場合にのみ必要です。これは結局のところ設計が間違っていることになります。 http://stackoverflow.com/tags/el/info – BalusC

+0

@BalusC .. Ohはい。私はその属性が自動的に順番に検索されることを忘れていました。 –