Struts2中的HttpSession问题

时间:2011-04-13 08:49:32

标签: struts2 httpsession

我正在做一个多用户登录应用程序,我使用session来存储用户对象。

HttpSession session = request.getSession(true);
  session.setAttribute("user",user);

在每个页面中,我使用JSTL检查会话中是否存在用户对象。

<c:choose>
   <c:when test="${not empty sessionScope.user}"> 
    //jsp code
    </c:when>
   <c:otherwise> 
    <logic:redirect forward="welcome"/>
  </c:otherwise>
</c:choose>

我的问题是,如果用户点击应用程序中的href链接,则用户将更改为会话中的Previous用户。即它正在从缓存加载用户。如果我刷新页面,它将加载正确的用户。

我该如何解决?

2 个答案:

答案 0 :(得分:1)

如果您正在使用Struts2,那么在Interceptor中进行检查可能更有意义,而不是在每个JSP中重复代码。

http://struts.apache.org/2.0.11/docs/interceptors.html

答案 1 :(得分:0)

Nate是对的,这最好在Interceptor中处理。这个answer可能对您有用。

修改

听起来这可能是一个页面缓存问题。尝试在Java代码中设置断点,以便可以检查会话中的用户对象。假设用户对象始终是正确的,并且只是显示不正确信息的页面,请尝试将无缓存标头设置为detailed here