我正在使用带有jsessionid的网址,例如
http://localhost:8080/myservlet;jsessionid=123
然而,每当我在HttpServletRequest中读取会话ID时,该值永远不会是123,而是生成的会话ID,例如。 B663A96D3FBC84B4A427C0810EAB9073。
为什么我的jsessionid会被忽略?
答案 0 :(得分:5)
那是因为你指定了一个会话ID,服务器内存中没有具体的HttpSession
对象。换句话说,给定的会话ID是未知/无效的。您需要指定一个会话ID,该ID引用服务器内存中的有效和现有HttpSession
对象。
假设您确实当前位于服务器内存中的ID为HttpSession
的有效B663A96D3FBC84B4A427C0810EAB9073
,则以下链接将起作用并使最终用户完全访问{{ 1}}:
http://localhost:8080/myservlet;jsessionid=B663A96D3FBC84B4A427C0810EAB9073
答案 1 :(得分:0)
我的猜测是,现在大多数应用服务器默认使用cookie进行会话跟踪,而不是URL重写。因此,如果您的请求在URL中同时包含会话cookie和JSESSIONID,它可能会使用cookie中的那个。查看appserver的文档,了解如何配置它。