Java 应用服务器如何跟踪HttpSession对象和客户端?

Java 应用服务器如何跟踪HttpSession对象和客户端?,java,jakarta-ee,servlets,httpsession,Java,Jakarta Ee,Servlets,Httpsession,应用服务器如何跟踪哪个客户端与哪个HttpSession对象关联?它是否与跟踪客户端之间的TCP/IP连接有关?或者是饼干?我怀疑这是cookies,因为提取cookies有一个单独的方法 背景 我知道servlet和JSP可以调用request.getSession来获取与客户机关联的HttpSession对象。我很好奇,当客户端请求新页面时,服务器如何知道返回相同的对象。我到处搜索,找到的所有文档都是关于如何提取会话信息的。我感兴趣的是服务器如何将会话信息从它可以访问的大量客户机数据中隔离出

应用服务器如何跟踪哪个客户端与哪个HttpSession对象关联?它是否与跟踪客户端之间的TCP/IP连接有关?或者是饼干?我怀疑这是cookies,因为提取cookies有一个单独的方法

背景

我知道servlet和JSP可以调用request.getSession来获取与客户机关联的HttpSession对象。我很好奇,当客户端请求新页面时,服务器如何知道返回相同的对象。我到处搜索,找到的所有文档都是关于如何提取会话信息的。我感兴趣的是服务器如何将会话信息从它可以访问的大量客户机数据中隔离出来

我怀疑是饼干

是的!在无状态HTTP协议和servlet中,基本上有两种跟踪用户会话的方法:JSESSIONID cookie或URL重写。后者在cookies不可用时使用

对于第一个响应,servlet容器在客户端中设置以下cookie:

Set-Cookie: JSESSIONID=25E7A6C27095CA1F560BCB2983BED17C; Path=/; HttpOnly
每个后续请求都包含这个cookie,servlet容器使用它来提供正确的HttpSession。您可以使用ServletAPI直接访问此cookie,甚至可以在JSESSIONID或其他cookie上构建自己的会话机制。但是servlet容器为您完成了这项工作

另见 -有关servlet容器如何区分cookie和URL重写的一些技术细节 我怀疑是饼干

是的!在无状态HTTP协议和servlet中,基本上有两种跟踪用户会话的方法:JSESSIONID cookie或URL重写。后者在cookies不可用时使用

对于第一个响应,servlet容器在客户端中设置以下cookie:

Set-Cookie: JSESSIONID=25E7A6C27095CA1F560BCB2983BED17C; Path=/; HttpOnly
每个后续请求都包含这个cookie,servlet容器使用它来提供正确的HttpSession。您可以使用ServletAPI直接访问此cookie,甚至可以在JSESSIONID或其他cookie上构建自己的会话机制。但是servlet容器为您完成了这项工作

另见 -有关servlet容器如何区分cookie和URL重写的一些技术细节
URL重写是您启用的可以添加到所有URL的东西,还是您需要手动附加它并从请求中解析它?我从未使用过wicket,但如果我理解正确,它正在处理URL重写?一个自尊心强的MVC框架会为此提供一个标签。例如,JSF提供了这方面的支持。在普通JSP中,您需要JSTL来实现这一点。URL重写是您启用的可以添加到所有URL的东西,还是您需要手动附加它并从请求中解析它?我从未使用过wicket,但如果我理解正确,它正在处理URL重写?一个自尊心强的MVC框架会为此提供一个标签。例如,JSF提供了这方面的支持。在普通JSP中,您需要JSTL来完成此操作。相关:相关: