cookie与session区别

cookie跟session有什么区别

1,存储的位置不同

cookie:存放在客户端

session:存放在服务端

2,存储的数据类型不同

两者都是key-value的结构,但针对value的类型是有差异的

cookie:value只能是字符串类型

session:value是Object类型

3,存储的数据大小限制不同

cookie:按照不同的浏览器来说,有些细小的差异,但整体来说就是4K的大小

session:理论上受当前内存的限制,没有4K的限制

4,生命周期的控制

cookie的存活期分两种情况,

一种是没有设置有效期,那么这种叫会话cookie,随着浏览器的关闭而消失;

另外一种是有设置有效期,setMaxAge,单位是秒,并不会随着浏览器的关闭而消息,而是到了过期时间才消失。

session,默认情况下有效期是30分钟,是根据web.xml的默认配置而来,可以通过程序的手段设置失效,也可以通过在web.xml配置自己设置的有效期时间

5,两者之间 联系

session跟cookie之间是有联系的,我们知道session保存是客户端跟服务器交互的会话信息,这里面会包含多次的请求和响应过程,但是http协议是一种无状态协议,也就是虽然同一个客户端发送了多次请求,但是对于服务器来说,它是无法分辨是同个客户端发送来的请求,那么这就会陷入一个问题,既然是无状态,那怎么又能保存这个会话信息呢?

于是,大家想了一个解决方案,浏览器第一次访问服务器时会创建一个session对象并返回一个JSESSIONID=ID的值,创建一个Cookie对象key为JSSIONID,value为ID的值,并将其保存到客户端浏览器上,每次客户端给服务器发送请求,都会自动将这个cookie携带到服务端,这样服务端在获取到里面的sessionId,从而可以定位到服务器的session信息,从而实现了整个会话的过程。

这个自动生成的cookie默认是由服务器自动生成的,比如tomcat,且是一个会话cookie随着浏览器。

猜你喜欢

转载自blog.csdn.net/trust_kobebryant/article/details/80955279