Cookie与Session

一、Session 和 Cookie 详解
当一个Session开始时,Servlet容器会创建一个HttpSession对象,那么在HttpSession对象中可以存放用户状态的信息
Servlet容器为HttpSession对象分配一个唯一标识即SessionId,Servlet容器把SessionId作为一种Cookie保存在客户端中
用户每次发出http请求,在http的请求头中都会带有cookie信息,服务端在httprequest请求对象中获取SessionId,然后根据唯一标识的sessionId去寻找对应的Session对象,如果能找到,则可以通过Session获取用户的信息,

Session的生命周期:
1.Session.invalidate()方法
2.当前用户和系统交互的时间超过session的保存的默认时长,怎会自动销毁

为什么关闭浏览器,就不能访问到原来的Session呢?
当我们关闭浏览器时,服务端的上次的会话session还是存在的,正如上面的所写,销毁Session的方式只有两种,当我们关闭浏览器时,跟Session没有任何的关系,管人家屁事,我们关闭浏览器的时,只是将本地保存唯一标识SessionId的Cookie给销毁了。
Cookie分为两种:
1.进程Cookie,又称为回话,他是保存在内存中的,即当对类型的浏览器全部关闭时,对应这个浏览器的进程Cookie才会被销毁
2.存在硬盘上的Cookie,比如我们选择记住密码等需要存储的信息,这种Cookie保存硬盘上,因此我们不管怎么蹂躏浏览器,除了自己删除cookie,不然,硬盘Cookie都是存在的,当然,Cookie到了自己的保存的时间,也会销毁

PS:(进程是资源分配的最小单元,进程Cookie跟浏览器的进程相关,保存在浏览器分配的资源中,同种浏览器应该都可以访问到)
1.当我们在一个浏览器使用多个窗口打开同一个网站的,此时我们访问的是同一个Session
2.当我们在打开两个同样浏览器,访问同一个网站时,我们访问的还是同一个Session
3.当我们打开两个不同的浏览器,访问同一个网站时候,这时访问的就是Session了,在另一个浏览器中是无法访问到该浏览器的进程资源的,因此,他会在服务端重新的生成Session,并将SessionId保存。



你可能感兴趣的:(Cookie与Session)