2

我正在使用带有 jsessionid 的 URL,例如。

http://localhost:8080/myservlet;jsessionid=123

然而,每当我在 HttpServletRequest 中读取会话 ID 时,该值永远不会是 123,而是生成的会话 ID,例如。B663A96D3FBC84B4A427C0810EAB9073。

为什么我的 jsessionid 被忽略了?

4

2 回答 2

5

那是因为您指定了一个会话 ID,HttpSession服务器内存中不存在具体对象。换句话说,给定的会话 ID 是未知/无效的。您需要指定一个会话 ID,它引用HttpSession服务器内存中的有效和现有对象。

假设您当前在服务器的内存中确实有一个有效HttpSession的 ID B663A96D3FBC84B4A427C0810EAB9073,那么以下链接将起作用,并为最终用户提供对它的访问权限HttpSession

http://localhost:8080/myservlet;jsessionid=B663A96D3FBC84B4A427C0810EAB9073

于 2011-09-12T15:17:00.687 回答
0

我的猜测是,如今大多数应用程序服务器默认使用 cookie 进行会话跟踪,而不是 URL 重写。因此,如果您的请求在 URL 中同时包含会话 cookie 和 JSESSIONID,它可能会使用 cookie 中的那个。检查您的应用服务器的文档以了解如何配置它。

于 2011-09-12T14:33:09.273 回答