我正在做一个多用户登录应用程序,我使用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用户。即它正在从缓存加载用户。如果我刷新页面,它将加载正确的用户。
我该如何解决?
答案 0 :(得分:1)
如果您正在使用Struts2,那么在Interceptor中进行检查可能更有意义,而不是在每个JSP中重复代码。
答案 1 :(得分:0)
Nate是对的,这最好在Interceptor中处理。这个answer可能对您有用。
修改强>
听起来这可能是一个页面缓存问题。尝试在Java代码中设置断点,以便可以检查会话中的用户对象。假设用户对象始终是正确的,并且只是显示不正确信息的页面,请尝试将无缓存标头设置为detailed here。