java - JSESSIONID 在 cookie 中获取两次

标签 java jakarta-ee servlets jboss struts

我正在使用 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/

相关文章:

java - javax.servlet.ServletContext 和 javax.servlet.ServletException 类型无法解析

java - Jetty 中的 ServletHandler 和 ServletContextHandler 有什么区别?

java - 参数未从 HTML 表单传递到 MySQL(通过 Tomcat、Eclipse(IDE)、Servlet 和 Java Bean)

java - 在我的应用程序中读/写文件时出现错误

java - do while 循环中的变量

java - 在 Java Web 应用程序中动态创建新的静态地址

ios - 在开发中禁用 Tomcat/Jetty ETag 或缓存,不适用于 IOS

java.lang.Object 无法解析。它是从所需的 .class 文件间接引用的

java - 在不使用Link组件的情况下为非 anchor 组件添加点击行为

java.io.FileNotFoundException : Could not open ServletContext resource [/resources/properties/database. 属性]