Session工作原理
- 在服务器中系统会为每个会话维护一个Session。不同的会话,对应着不同的Session。那么如何做到在同一会话过程中,一直使用的是同一Session对象?
- 写入Session列表
- 服务器对当前应用中的Session是以Map形式进行管理的,这个Map称为Session列表。该Map的key为32位的随机字符串,这个随机字符串称为JSessionID,value则为Session对象的引用。
- 当用户第一次提交请求时,服务端Servlet中执行get.Session(),会自动生产一个Map.Entry对象,key为JSessionID,value则为Session对象的引用。
- 服务器生成并发送Cookie
- 在将Session信息写入Session列表后,系统会自动将JSESSIONID作为name,32位的随机串作为value,以Cookie的形式存放到响应报头中,将该Cookie发送到客户端
- 客户端接收并发送Cookie
- 客户端接收到这个Cookie后会将其放置浏览器缓存中。当用户提交第二次请求时,会将缓存中的这个Cookie放在请求的头部发送到服务端
- 在Session列表中查找
- 服务器会根据请求中的Cookie中的JSESSIONID,从Map中查找对应的value,即Session对象。然后对Session对象的域属性进行读写操作
链接:Cookie与Session(Cookie篇)
相关文章: