Java HttpSession属性存储在哪里?

时间:2011-04-29 22:52:54

标签: java tomcat servlets cookies httpsession

对象是否已序列化并发送给用户并返回每个连接(存储在cookie中)?

或者它们是否存储在服务器堆中,而cookie只是一个非常小的标识符?

有关此主题的任何信息都会有所帮助。

谢谢

2 个答案:

答案 0 :(得分:20)

你在第二次猜测时得到了它。

Cookie包含JSESSIONID。该id用于在服务器维护的地图中查找用户的HttpSession。至少这是最常见的方式。服务器可以通过更复杂的方式实现这一点,但是在cookie中将整个状态切换回来并不是其中之一。

这有一些含义。首先,如果服务器出现故障,您将失去会话状态。其次,如果您有服务器群集,则需要每次都将用户连接到同一服务器,否则他们将在后续请求之间丢失会话。最后,如果某人找到了复制别人的JSESSIONID并用它替换他们的方法,那么会话劫持就成了可能。

答案 1 :(得分:7)

cookie只包含一个会话标识符(通常称为JSESSIONID)。服务器将此标识符映射到当前存储在用户会话中的任何数据。

数据本身可以存储在内存中,也可以序列化为数据库或文件,具体取决于您使用的服务器及其配置。

相关问题