0

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

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 链接,用户会在会话中更改为上一个用户。即它正在从缓存中加载用户。如果我刷新页面,它将加载正确的用户。

我该如何解决?

4

2 回答 2

1

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

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

于 2011-04-13T16:13:02.213 回答
0

Nate 是对的,这最好在拦截器中处理。这个答案可能对你有用。

编辑

听起来这可能是一个页面缓存问题。尝试在 Java 代码中设置断点,以便检查会话中的用户对象是什么。假设用户对象始终是正确的并且它只是显示错误信息的页面,然后尝试设置 no-cache headers,如这里详述

于 2011-04-13T19:18:58.813 回答