Session理解
Session(HTTP会话),一个用户登陆邮件系统,进行发信,收信等操作后退出系统,这一过程可以看作一次会话。Session则是来跟踪会话的。如果没有会话,用户和用户之间的操作是不能区分出来了的,例如,同一台电脑,用户A和B分别使用不同的的浏览器把商品加入自己的购物车,这时访问的都是同一个url:127.0.0.1/add?item=XXX。怎样区分A的购物车和B的购物车呢?
创建Session的流程
Session的生命周期
创建
- 当浏览器第一访问后台时会创建新的Session
- 当Session被销毁,重新访问后台时会创建新的Session
激活、搁置
- 激活:浏览器携带带有SessionId的Cookie访问后台,后台能找到对应的Session
- 搁置(Session的持久化):后台停止或者重启,会将有效的Session存入文件系统中持久化,Tomcat默认机制有效时间是1800秒(30分钟)
销毁
- Session过期
- 浏览器关闭
- 服务器调用HttpSession的invalidate()方法
重写URL来跟踪会话
当浏览器端禁用Cookie时,会话则不能再被跟踪,SessionId没有地方存放,每次访问后台,都是新的会话被创建。
可以使用HttpServletResponse的encodeURL(String url)来重写URL,当检测到浏览器端Cookie被禁用时,encodeURL会把SessionId当作参数拼接在URL后面。
会话的持久化
会话持久化的好处:
- Session默认是存放在内存当中的,当用户很多的时候,Session也会很多,持久化到文件系统或者是,数据库中可以减轻服务器压力。
- 当后台服务器重启或者停止时,保证服务器恢复后,用户可以继续操作之前的“数据”(例如购物车)。
会话的监听
监听无非就是创建时,销毁时,放入属性值之类什么的,百度吧。。。