session和cookie的精讲

cookie和session都是用来存储信息的对象,用于特定场景。比如我们用户登录信息的存储,我们把用户名密码等放在cookie或者session里面每次需要判断用户是否处于登录状态的时候就从这里面取出来使用。或者用于当用户返回一个页面的时候需不需要重新登录的问题,把用户名和密码放在里面,回到首页的时候getSession或者getCookie发现有这个值,就从里面获取用户名和密码,然后传给数据库做校验,通过之后直接返回页面,这样就形成了不需要我们再次登录的效果。

 

那么使用cookie和session的区别在哪里呢?

第一,声明周期问题,cookie的生命周期是自己设定的周期和本地cookie文件是否被消毁决定的。就是你设置30分钟,30分钟没有到,cookie就一直有效,到了就自动销毁掉。或者你把自己磁盘上面的cookie的文件删除就没有了。

而session的生命周期是和浏览器绑定在一起的,以及自身设置的时间决定。这是有区别的,和浏览器绑定在一起的话,浏览器关闭,session就没有了。而cookie,浏览器关闭了,信息依然有。

第二,信息保存的位置不一样。cookie在本地保存,用户名密码都在你的机子上面保存,session保存在服务器。保存在本地上容易被盗取,保存在百度里面,很难被盗取。

 

那么为什么使用session比cookie安全呢?

因为使用session的话,在cookie里面保存了sessionId,通过这个id调用session的信息,登录。而这个id你的页面关闭立马就没有了,别人很难找到这个id,页面打开又是一个新的id,所以很难被调用session的信息。这里提到一点,cookie是有两种的,一种是浏览器自带的cookie,这种cookie周期是绑定在浏览器进程里面的,如果这个浏览器页面关闭cookie没有了,这里面保存的id也没有了。另一种我们程序员new出来的cookie是保存在磁盘的,这个cookie不保存id。

因此,session比cookie安全。

 

第三,session和cookie都是由服务器创建的,可能是jsp,也可能是java代码创建都行。为什么要创建这个呢?因为http协议在web1.0时代是无状态的,无状态不能保存一些用户定制化的信息,比如浏览历史,比如自动登录,比如回退不需要重新登录,或者统计浏览量,或者客户的购物记录等。

浏览器和服务器直接怎么交互cookie和session的呢?

浏览器访问jsp页面,服务器生成cookie或者session,返回给浏览器。浏览器将信息输入保存到request对象中给服务器,服务器接收到信息,然后保存到cookie或者session里面。如果是cookie,返回给浏览器的是在cookie保存的信息,并且cookie保存在自己的磁盘上面。如果是session的话,返回的浏览器的是session的id。注意,一个是返回所有信息,一个只返回id。

 

第四,时效性问题。cookie和session的时效性问题,这里有一个重新计时问题。用户不操作就开始计时,达到设定的时间,销毁。并不是有没有操作都会销毁。

 

一个站点最多保存20个cookie。

session的实现依赖于cookie,没有cookie就没有session。比如手机浏览器没有cookie,那么只能重写url,把sessionId写入到url里面传值。response.encodeURL("url的值")  

 

另外这里强调一点,浏览器上面的sessionId在浏览器关闭之后消失,并不是说session消失,这个要消失等到设定的时间到了才会消失。

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值