2013-11-22 58 views
0

我使用會話對象來存儲登錄的用戶ID signUpAction.java的Struts 1.3會話管理

HttpSession session = request.getSession(); 
if(login>0&&candy>0){     
    session.setAttribute("username", val.getUsername()); 
    result = "success";  
} 

然後我提出相應的他/她的ID的用戶到JSP頁面。

User name is `<bean:write name="signUp" property="username"/>` 

問題是,當用戶單擊後退按鈕時,他/她會退出(無需單擊任何註銷按鈕)。我想要保持一個會話,直到用戶單擊註銷按鈕。我如何檢查用戶是否在每個頁面上登錄? 我正在使用Struts 1.3,我對它很陌生。請幫幫我。我正在嘗試開發一個Job Portal Web應用程序作爲一個項目。

回答

0

這裏是我做到了。在我validateAction類文件

HttpSession session = request.getSession(); 
session.setAttribute("username", val.getUsername()); 

之後,每一個JSP頁面上,我寫

<c:choose> 
     <c:when test="${not empty sessionScope.username}"> 
      // all the codes goes here 
     </c:when> 
     <c:otherwise> 
      <h1>Please Login First.</h1> 
     </c:otherwise> 
</c:choose> 

而在母版頁我包括

<body onload="window.history.forward(1);"> 

所以即使當用戶單擊後退按鈕瀏覽器將不會加載上一個緩存頁面。

,當用戶點擊退出按鈕,我打電話給我的invalidateAction類文件

HttpSession session = request.getSession(); 
session.removeAttribute("username"); 
0

如果用戶登錄會話屬性"username"不應該是null。檢查val.getUsername()返回的值不是null。然後保持這個變量最後的,即不允許將該值設置兩次。然後在JSP中,您可以使用JSTL檢查該變量。

<c:if test="${username != null}"> 
    User name is ${username} 
</c:if> 
0
<s:set name="personName" value="person.name" scope="session" />