我正在使用 jboss 5.1 服务器和 struts 框架。以下是用例
用例 1
1)清除浏览器缓存并使用我的应用程序 url 加载浏览器
(比如/loadLogin.do)
2) 在代码中 httpSession = request.getSession(false);
当我检查 httpSession 它不为空并且有一些 jessionid 说 123
3)现在我使 session 无效 httpSession.invalidate();
4) 我再次创建一个新 session httpSession = request.getSession()
;现在这次创建了一个新的 jessionid,比如 456
5)最后,当我检查我的 cookie 时,它显示了 2(两个)jessionid 的
Set-Cookie: JSESSIONID=123.node1; Path=/loadLogin
Set-Cookie: JSESSIONID=456.node1; Path=/loadLogin
用例 2
1)不要清除缓存
2) 假设浏览器已经有 url(即登录到应用程序然后注销然后再次尝试登录,这次浏览器在其下拉列表中显示 url)
3) 这次当我检查 cookie 时只有 1 个 jessionid 存在..
有人能告诉我,是服务器的行为方式,还是与应用程序中处理 session 的方式有关
最佳答案
半年前我也处理过这个问题。这是一个非常令人沮丧的问题。但是我解决了。 您首先取消新创建的 session ,然后创建新 session 。
if (getHttpRequest().getSession(false).isNew() == false) {
getHttpRequest().getSession(false).invalidate();
getHttpRequest().getSession(true);
}
关于java - JSESSIONID 在 cookie 中获取两次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11756865/