Java JSESSIONID在cookie中获得两次

Java JSESSIONID在cookie中获得两次,java,jakarta-ee,servlets,jboss,struts,Java,Jakarta Ee,Servlets,Jboss,Struts,我正在使用JBoss5.1服务器和struts框架。以下是用例 用例1 1) 清除浏览器缓存,并用我的应用程序url加载浏览器 (say/loadLogin.do) 2) 在codehttpSession=request.getSession中(false)当我检查httpSession时,它不是空的,并且有一些jessionid,比如123 3) 现在我使会话无效httpSession.invalidate() 4) 我再次创建一个新会话httpSession=request.getSessi

我正在使用JBoss5.1服务器和struts框架。以下是用例

用例1 1) 清除浏览器缓存,并用我的应用程序url加载浏览器
(say/loadLogin.do)

2) 在code
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


有人能告诉我,服务器是如何工作的,或者与应用程序中处理会话的方式有关吗?

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

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

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

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