2012-12-27 29 views
5

làm cách nào tôi có thể kiểm tra và sử dụng userLoggedIn để xác nhận điều kiện. Tôi mới và tôi đã tìm kiếm rất nhiều. phải có một sai lầm ngớ ngẩn.JSTL và c: khi điều kiện thử nghiệm

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> 

một số xác minh 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

vấn đề này là gì? –

+1

tại sao userLoggedIn không phải là boolean? – BevynQ

Trả lời

7

Bạn cần lưu trữ thông tin trong phạm vi mong muốn, mà thường là phạm vi phiên đối với trường hợp đăng nhập người dùng.

Thêm dòng sau sauuserLoggedIn = 1;.

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

Về cơ bản, tất cả những gì bạn cần thay đổi.


Không liên quan cho vấn đề cụ thể, int này (và boolean như nhận xét của BevynQ) cách tiếp cận khá "thô sơ". Bạn thường lưu trữ toàn bộ thực thể User thu được từ DB trong phiên thay thế. Ví dụ.

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

với

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

cho phép dễ dàng truy cập của tất cả các thuộc tính của nó như

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

Cũng cần phải truy cập trong JSTL như sau: - '$ {sessionScope.userLoggedIn}' –

+2

@Rohit: Điều đó không cần thiết. Vui lòng đọc hướng dẫn JSP/Servlet lành mạnh. Cách tiếp cận này chỉ cần thiết nếu bạn cũng có cùng thuộc tính trong phạm vi trang hoặc yêu cầu, sau đó tất cả sẽ là thiết kế đơn giản. Xem thêm http://stackoverflow.com/tags/el/info – BalusC

+0

@BalusC .. Oh Có. Tôi quên rằng thuộc tính sẽ tự động được tìm kiếm theo thứ tự. –

Các vấn đề liên quan