Session、Cookie过期时机
Session过期
- session超时 默认时间20min
- 服务器关闭
- session.invalidate()方法
Cookie过期
- 会话Cookie(SessionCookie)。会话Cookie存储在客户端的内存(浏览器占用的内存)中,决不会写入磁盘。当浏览器关闭时,Cookie将从此永久丢失。
- 持久性Cookie,存储在客户端的磁盘中。在指定的到期日期,Cookie将从磁盘中删除。
换种说法与session过期一致:
- cookie超时
- 浏览器关闭
运行机制
第一次发送请求,请求头部无sessionID,Web服务器为客户端创建新session,生成sessionID,开始计时,将sessionID随本次响应返回客户端,
第二次发送请求,更新计时,服务器通过sessionID找session,本次sessionID不会再随着响应返回客户端,如果session超时被服务器删除,再次访问会创建另一个新的session
当(存放着SessionId的)Cookie和Session中两者有任一过期,即宣告会话过期。
1、请求servlet
2、换个浏览器再试试
3、请求jsp页面
客户端浏览器关闭会话结束的实际原因
浏览器关闭只是中断了和Web服务器的联系,但是session对象依然存在服务器端,会话结束的真正原因是由于第一次发送请求请求头部无sessionID,故创建的新ID将老ID覆盖。如果服务器关闭,则将对象序列化到SESSIONS.ser文件内(Tomcat的work目录下),服务器重新启动,则将该文件中session对象重新反序列化。
比如第一次请求hello那个servlet生成的一个sessionId
关闭并重启Chrome再次请求hello,tomcat为之再次生成了一个新的sessionId,覆盖了原来的那个