cookie和session

来源:互联网 发布:js click 编辑:程序博客网 时间:2024/06/06 20:43


cookie默认的生命中期为一次浏览器会话期间,只要关闭浏览器窗口,cookie就消失了。这种生命期为浏览会话期的cookie被称为会话cookie。会话cookie一般不保存在硬盘上而是保存在内存里。存储在硬盘上的cookie可以在不同的浏览器进程间共享,比如两个IE窗口(相同浏览器间)。而对于保存在内存的cookie,不同的浏览器有不同的处理方式。




session保存在服务器,而sessionId通过Cookie发送给客户端,但这个Cookie的生命不-1,即只在浏览器内存中存在,也就是说如果用户关闭了浏览器,那么这个Cookie就丢失了。

当用户再次打开浏览器访问服务器时,就不会有sessionId发送给服务器,那么服务器会认为你没有session,所以服务器会创建一个session,并在响应中把sessionId中到Cookie中发送给客户端。     

你可能会说,那原来的session对象会怎样?当一个session长时间没人使用的话,服务器会把session删除了!这个时长在Tomcat中配置是30分钟,可以在${CATALANA}/conf/web.xml找到这个配置,当然你也可以在自己的web.xml中覆盖这个配置!

web.xml

    <session-config>

        <session-timeout>30</session-timeout>

    </session-config>

 

session失效时间也说明一个问题!如果你打开网站的一个页面开始长时间不动,超出了30分钟后,再去点击链接或提交表单时你会发现,你的session已经丢失了!




案例分析:

登录网站点击记住用户名和密码选项。此时用户名和密码就默认存储到了session中。

如果cookie默认不设置过期时间cookie的生命周期就是一次会话,浏览器不关闭cookie就一直存在,当关闭浏览器时,携带有sessionID的cookie自动销毁。session的过期时间默认情况下是30分钟(可手动更改)。

情况一:倘若30分钟之内浏览器关闭了,携带有sessionID的cookie自动销毁了,但是此时session还没有销毁,因为session保存在服务期内。重新打开浏览器请求原页面,服务器中的session仍然用以前的sessionID重新创建一个cookie并把sessionID绑定到新创建的cookie上发送给客户端。




情况二我预测不成立!如有知道的请留言说明:

情况二:已经超过30分钟,浏览器没动。但此时session已经自动销毁,当未关闭的浏览器再次访问原链接页面时,绑定sessionID的cookie又会重新去服务器中找对应的session,而此时由于原session已经销毁。服务器就会根据cookie携带的sessionID重新创建一个和以前一样的session,原有的登录信息依然保留。



1 0
原创粉丝点击