JSESSIONID在cookie中获得两次

时间:2012-08-01 09:58:15

标签: java java-ee servlets jboss struts

我正在使用jboss 5.1服务器和struts框架。以下是用例

用例1

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

用例2

1)不要清除缓存

2)假设浏览器已经有了url(即登录到应用程序然后注销然后再次尝试登录,这次浏览器在其下拉列表中显示url)

3)这次我检查cookie只有1个jessionid存在..

有人可以告诉我,服务器的行为方式,或与应用程序中处理会话的方式有关

1 个答案:

答案 0 :(得分:0)

半年前我也处理过这个问题。这是非常令人沮丧的问题。但我解决了它。 首先取消新创建的会话,然后创建新会话。

if (getHttpRequest().getSession(false).isNew() == false) {
  getHttpRequest().getSession(false).invalidate();
  getHttpRequest().getSession(true);
}