每天一道面试题-再谈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配置自己设置的有效期时间

<session-config>

<session-timeout>10</session-timeout>

</session-config>

5,两者之间 联系

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

于是,大家想了一个解决方案,就是在创建session的同时,也创建了一个cookie,该cookie很特别,保存着session的id信息,并将其保存到客户端浏览器上,每次客户端给服务器发送请求,都会自动将这个cookie携带到服务端,这样服务端在获取到里面的sessionId,从而可以定位到服务器的session信息,从而实现了整个会话的过程。

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

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值