Session工作原理

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

链接:Cookie与Session(Cookie篇)

相关文章: