Session Tomcat中的会话管理

Session Tomcat中的会话管理,session,tomcat,jakarta-ee,Session,Tomcat,Jakarta Ee,我开发了一个简单的web应用程序,包含两个servlet a和B 我对Tomcat的web应用程序的会话管理有一些疑问 注意-在访问web应用程序时,我已禁用web浏览器(Chrome)中的Cookie 1.)当web应用程序第一次被点击时,Servlet A被调用。Servlet A从请求访问会话,并对会话哈希代码执行简单的sysout操作。然后它对servlet B执行一个发送重定向 [据我了解,由于这是第一个请求,Tomcat将向浏览器发送一个包含新会话ID的cookie。但是,由于我们没

我开发了一个简单的web应用程序,包含两个servlet a和B

我对Tomcat的web应用程序的会话管理有一些疑问

注意-在访问web应用程序时,我已禁用web浏览器(Chrome)中的Cookie

1.)当web应用程序第一次被点击时,Servlet A被调用。Servlet A从请求访问会话,并对会话哈希代码执行简单的sysout操作。然后它对servlet B执行一个发送重定向

[据我了解,由于这是第一个请求,Tomcat将向浏览器发送一个包含新会话ID的cookie。但是,由于我们没有使用HttpResponse.encodeRedirectURL()对重定向URL进行“编码”,因此重定向URL将不包含附加到其上的会话ID。如果我在此处出错,请更正。]

2.)由于我的浏览器中禁用了cookie,它将忽略cookie中发回的会话ID,并向重定向URL发出新请求(重定向URL也没有附加会话ID)

3.)新请求导致调用servlet B,servlet B还访问请求会话,并对会话哈希代码执行sysout操作

让我困惑的是servlet A和B都输出相同的会话哈希代码,这意味着它们从两个请求中获得相同的会话

即使没有发送会话ID,浏览器的第二个请求如何映射到与以前相同的会话


谢谢

在请求之间传递会话只有两种方法:Cookie和URL重写。如果在URL中看不到会话ID,则它必须是cookies


您确定cookie已禁用吗?从HTTP头跟踪应该很容易看到。

您确定已禁用“内存中”cookie吗?浏览器通常允许您禁用保存到磁盘的持久cookie,但仍然允许仅在浏览器会话期间驻留的临时内存cookie

我建议您分析HTTP流。这样,您就可以看到浏览器发送和接收的cookies。

这很奇怪

当我昨天测试应用程序时,它表现出与我所描述的类似的行为。然而,当我现在测试应用程序时,它的行为就像我期望的那样完美

原因可能是我在禁用cookie后没有重新启动浏览器会话

如果我再次经历同样的行为,我会告诉你们的

谢谢你们的时间,伙计们