Tomcat 中的 Session 是放在 org.apache.catalina.session.ManagerBase 类中,以 HashMap 格式存放,key 为 sessionId, value 为 org.apache.catalina.Session 接口, 这个接口由org.apache.catalina.session.StandardSession 类实现,这个类同时实现了 HttpSession 接口。
session变量保存在网页服务器中,你不能直接修改,当然,调用程序中的setAttribute()方法当然可以了。 cookie存储的可不是具体的数据,要不岂不是太不安全了,谁都可以修改session变量了,网站也毫无安全性可言。实际,在cookie中,存储的是一个sessionId,它标示了一个服务器中的session变量,通过这种方式,服务器就知道你到底是那个session了。顺便说一句,如果客户端不支持cookie,session也是可以实现的,在服务器端通过urlEncoder,可以实现sessionId的传递。所以,记住客户端只存储session标识,实际内容在网页服务器中。
本文详细解析了Tomcat中的Session机制,包括其在ManagerBase类中的HashMap存储方式、与HttpSession接口的关系以及如何通过cookie标识session变量。讨论了客户端如何存储session标识,以及在不支持cookie的情况下服务器端实现session的方法。
302

被折叠的 条评论
为什么被折叠?



