应用程序服务器如何跟踪哪个客户端与哪个HttpSession对象相关联?它与跟踪客户端之间的TCP / IP连接有关吗?还是饼干?我怀疑它是cookie,因为有一种单独的方法来提取cookie。
背景
我知道servlet和JSP可以调用request.getSession()来获取与客户端关联的HttpSession对象。我很好奇服务器在客户端请求新页面时如何知道返回同一个对象。我一直在搜索,我找到的所有文档都是关于如何提取会话信息的。我对服务器如何从它可以访问的客户端数据的海洋中隔离该会话信息感兴趣。
答案 0 :(得分:8)
我怀疑是饼干
是的!在无状态HTTP协议和servlet中基本上有两种跟踪用户会话的方法:JSESSIONID
cookie或URL重写。当cookie不可用时使用后者。
使用第一个响应servlet容器在客户端中设置以下cookie:
Set-Cookie: JSESSIONID=25E7A6C27095CA1F560BCB2983BED17C; Path=/; HttpOnly
每个后续请求都包含此cookie,servlet容器使用它来提供正确的HttpSession
。您可以使用servlet API直接访问此cookie,甚至可以在JSESSIONID
或其他cookie之上构建自己的会话机制。但是servlet容器会为你做这件事。