【问题标题】:Struts 1.3 Session ManagementStruts 1.3 会话管理
【发布时间】:2013-11-22 11:34:28
【问题描述】:

我正在使用会话对象将登录的用户ID存储在signUpAction.java中

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 应用程序开发为一个项目。

【问题讨论】:

    标签: java jsp session struts


    【解决方案1】:

    如果用户登录会话属性"username" 不应该是null。检查 val.getUsername() 是否返回非 null 值。然后保留这个变量final,即不允许设置这个值两次。然后在 JSP 中,您可以使用 JSTL 检查该变量。

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

    【讨论】:

      【解决方案2】:
        <s:set name="personName" value="person.name" scope="session" />  
      

      【讨论】:

        【解决方案3】:

        这就是我的做法。在我的 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");
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2014-01-23
          • 1970-01-01
          • 1970-01-01
          • 2011-04-03
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-10-11
          相关资源
          最近更新 更多