1

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

背景

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

4

1 回答 1

8

我怀疑是饼干

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

使用第一个响应 servlet 容器在客户端设置以下 cookie:

Set-Cookie: JSESSIONID=25E7A6C27095CA1F560BCB2983BED17C; Path=/; HttpOnly

每个后续请求都包含这个 cookie,servlet 容器使用它来提供正确的HttpSession. JSESSIONID您可以使用 servlet API 直接访问此 cookie,甚至可以在或其他一些 cookie之上构建自己的会话机制。但是 servlet 容器会为您做到这一点。

也可以看看

于 2012-09-02T19:18:59.827 回答