1. Session(会话)
Session 是一个会话级别的对象,一次会话对应一个HttpSession 对象。javax.servlet.http.HttpSession session,简称Session(会话)。
服务器会为每个用户创建一个Session,并存放在服务器端。
2. Session与Cookie 区别
Cookie 可以将会话状态保存在客户端,可以保存多个;
Session 可以将会话状态保存在服务器端,保存重要信息,减少服务器资源浪费。
3. Session 的实现原理
思考:为什么当前会话的每一次请求可以获取到属于自己的会话对象?
- 打开浏览器,在浏览器上首次发送请求;
- 服务器会创建一个HttpSession 对象,该对象代表一次会话;同时生成HttpSession 对象和与之对应的Cookie 对象,并且Cookie 对象的name 是JSESSIONID,Cookie 的Value 是32位长度的字符串;
- 服务器将Cookie 的Value 和HttpSession 对象绑定到Session 列表中;
Session 列表:在Web 容器中有一个Session 列表,用于维护大量的HttpSession 对象。 - 服务器将Cookie 完整发送给浏览器客户端;
- 浏览器客户端将Cookie 保存到缓存中,只要浏览器不关闭,Cookie 不会消失; <