Cookie是什么?Session是什么?它们有什么区别?

Cookie

cookie由服务器生成,发送给浏览器,保存在浏览器上。

cookie生命周期

  • 会话级别:本次浏览器关闭

    保存在浏览器内存中的cookie(默认)。特点:浏览器关闭,cookie就会销毁

  • 持久化级别:cookie的存活时间过期

    保存在浏览器对应的硬盘上。特点:浏览器即使关闭,cookie也会保存下来(cookie的销毁与浏览器是否关闭无关,和cookie的存活时间有关)

  • setMaxAge(int expiry)设置cookie的存活时间。 秒

    -1 默认。保存在浏览器的内存中浏览器关闭cookie销毁

    0 让cookie立即销毁1970年1月1日就过期

    >0 的正整数

只要正整数大于0的,就会存活在浏览器对应的硬盘上,不以浏览器的关闭为销毁。而是时间到期,就会自动销毁

Session

保存在服务器的会话技术。

Session原理

举个例子:银行账户是一个 session,银行卡是一个 sessionid,卡本身是一个cookie,卡里面存了一个 sessionid

当你首次访问服务器时,服务器为你创建了一个 session,并且给了你一个sessionid,让你带走。session 就相当于一个银行账号,sessionid 相当于一个唯一标识,它放到了一个 cookie 里面让你带走,你(客户端) session 里面的东西都寄存在服务器端,我不动它,当需要用的时候,sessionid 给服务器,服务器里面的东西,就都可以拿出来。一旦中途关闭了浏览器,里面的 cookie 就没了。这时候服务器会帮你再创建一个 sessionid (相当于办卡),把一个新 sessionid 分配给你让你带走,原先的 session 还在服务器端,但是没有人能够获取到它,因为没有对应的sessionid 就没法找到这个 session。时间一久(默认三十分钟,session 最大不活动时间),服务器看到这个 session 没人用就扔了。

session生命周期

创建:第一次调用 getSession() 创建

销毁:

1、服务器非正常关闭

服务器正常关闭时,session对象会序列化方式保存到硬盘上。下次服务器正常启动时,硬盘数据就会回到内存中。

2、主动调用 session对象.invalidate()

3、超过 30 分钟没有调用 session

Session 和 cookie 区别

cookie是浏览器技术, 是服务器发送过来的, 保存在浏览器

session是服务器技术, 数据保持在服务器,通过cookie与浏览器建立联系, 保证用户在切换页面时保持会话

区别:

cookie只能存储英文字符串, session可以存储任意数据
cookie只能存储少量数据,session可以存储大量数据
cookie默认生命周期是当前会话, 关闭浏览器自动销毁, session默认生命周期是30分钟
扩展题:浏览器关闭并重新开启,之前的 session 是否立即销毁?为何获取不到浏 览器关闭之前的 session 数据?

详解:

session 依赖于 cookie 通过 JSESSIONID 传递 session 的 id

getSession()时,通过 JSEESSIONID 的 cookie 寻找已有的 session 对象。

浏览器关闭时,JSESSIONID 是会话级别 cookie,被浏览器删除了。

再次开启浏览器向服务器发送请求时,因为没有 JSESSIONID 的 cookie,getSession()会创建了一个新 session,新 session 没有之前的数据。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值