2

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

用例 1

1)清除浏览器缓存并使用我的应用程序网址加载浏览器
(例如/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存在..

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

4

1 回答 1

0

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

if (getHttpRequest().getSession(false).isNew() == false) {
  getHttpRequest().getSession(false).invalidate();
  getHttpRequest().getSession(true);
}
于 2012-08-01T20:17:48.833 回答