Struts 1.3 会话管理

问题描述 投票:0回答:3

我正在使用 HTTP 会话对象将登录用户

id
存储在
signUpAction.java
中:

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

然后我将用户转发到与他/她对应的 JSP 页面

id

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

问题在于,当用户单击后退按钮时,他/她会重新注销(无需单击任何注销按钮)。我希望维持会话,直到用户单击注销按钮。还有如何检查每个页面的用户是否都已登录?

我正在使用 Struts 1.3,而且我是新手。请帮我。我正在尝试开发一个求职门户网络应用程序作为一个项目。

java jsp session struts struts-1
3个回答
0
投票

如果用户已登录,会话属性

"username"
不应为
null
。检查
val.getUsername()
返回的不是
null
值。然后保留这个变量final,即不允许设置这个值两次。然后在 JSP 中您可以使用 JSTL 检查该变量。

<c:if test="${username != null}">
  User name is ${username} 
</c:if>  

0
投票
  <s:set name="personName" value="person.name" scope="session" />  

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");
© www.soinside.com 2019 - 2024. All rights reserved.