2012-12-27 4 views
5

Wie kann ich userLoggedIn überprüfen und verwenden, um den Zustand zu bestätigen. Ich bin neu und ich habe viel gesucht. da muss ein dummer Fehler sein.JSTL und c: Wenn Testbedingung

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> 

einige Überprüfung Servlet

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

Was das Problem ist? –

+1

Warum ist userLoggedIn nicht boolesch? – BevynQ

Antwort

7

Sie benötigen die Informationen im gewünschten Umfang zu speichern, die für Fall von angemeldeten Benutzer in der Regel die Sitzungsbereich ist. Geben Sie die folgende Zeile nachuserLoggedIn = 1; ein.

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

Das ist im Grunde alles, was Sie ändern müssen.


Unrelated auf die konkrete Problem, diese int (und boolean wie BevynQ kommentiert) Ansatz ist eher "primitiv". In der Regel speichern Sie stattdessen die gesamte Entität User, die Sie in der Sitzung erhalten haben. Z.B.

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

mit

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

die wie einfachen Zugang von allen Eigenschaften erlaubt

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

Außerdem müssen Sie in JSTL wie folgt zugreifen: '$ {sessionScope.userLoggedIn}' –

+2

@Rohit: Das ist nicht notwendig. Bitte lesen Sie ein vernünftiges JSP/Servlet-Tutorial. Dieser Ansatz ist nur dann notwendig, wenn Sie im Seiten- oder Anforderungsumfang dasselbe Attribut haben, was schließlich ein schlechtes Design wäre. Siehe auch http://stackoverflow.com/tags/el/info – BalusC

+0

@BalusC .. Oh ja. Ich habe vergessen, dass das Attribut automatisch in der Reihenfolge gesucht wird. –