我在我的应用程序主页的pageload上的session对象中设置了userId,如下所示
HttpSession session = req.getSession();
session.setAttribute("userId", validUserId);
当用户导航到应用程序的不同页面时,我使用下面的常规方法获取此userId,稍后我将此userId保存在数据库中。
HttpSession session = request.getSession();
String userId = (String) session.getAttribute("userId");
这在100次通话中几乎可以使用95次。我能够获取userId并存储在数据库中,但是对于5次调用,我得到的只是一个空白的userId对象。 我无法在较低的环境中重现此问题,因此很难理解问题所在。
我已经将页面的自动过期时间设置为20分钟,方法是在web.xml中添加属性,然后在jsp页面中使用它。
有人可以指导一下这个问题的根本原因吗?
答案 0 :(得分:0)
找到根本原因。
当我显示到期页面并使会话无效时,如果用户点击浏览器的后退按钮,它再次显示旧页面,如果现在提交数据,则此变量不可用,因为会话已经失效先前。需要修复后退按钮问题。