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