session保存在服务器端,会一直存在,默认存在时间30分钟;
cookie保存sessionid,服务器会根据cookie中sessionid获取session;
两种类型的Cookie:
- 临时Cookie(会话Cookie)
- 永久Cookie
不设置过期时间,则表示这个cookie生命周期为浏览器会话期间,只要关闭浏览器窗口,cookie就消失了。这种生命期为浏览会话期的cookie被称为会话cookie。会话cookie一般不保存在硬盘上而是保存在内存里。
设置了过期时间,浏览器就会把cookie保存到硬盘上,关闭后再次打开浏览器,这些cookie依然有效直到超过设定的过期时间。
存储在硬盘上的cookie可以在不同的浏览器进程间共享,比如两个IE窗口。而对于保存在内存的cookie,不同的浏览器有不同的处理方式。
为何关闭浏览器后,再次访问会觉得session失效了呢,这里的失效意思是session的数据丢失了?
其实这里session数据并没有丢失,只是关闭浏览器后,因为默认的cookie生命周期为浏览器的缓存,即关掉浏览器之后cookie就失效了,此时sessionid也就没有了。再次访问后,服务器又生成一个新的sessionid,此时request.getSession()通过sessionid获取到的session就不是之前的session了。