栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

更容易理解cookie和session

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

更容易理解cookie和session

浏览器从开启 到 关闭,我们称为一次会话

  • session的生命周期:服务器非正常关闭、超过30分钟未访问session对象、调用invalidate()方法都会销毁,服务器正常关闭,则会保存在硬盘上,下次服务器启动时会加载回来,一个会话只有一个session,也就是说,只要服务器那边不关闭,在cookie中设置setMaxAge(int expiry)即可。
  • cookie生命周期:和浏览器的关闭与否有关,和服务器关闭与否无关
    0 让cookie立即销毁
    -1 默认 浏览器必须打开着的,浏览器关闭cookie销毁

0的正整数 0

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

相同的cookie设置,新的会覆盖旧的

  • 用户第一次登录服务器后,服务器会返回一些数据(cookie)给浏览器,浏览器保存在本地或者内存,用户第二次访问服务器的时候,服务器就会根据用户上次保存的cookie来判断是哪个用户。
  • 当会话开启并且创建session的时候,就会生成一个sessionID,并且服务器把这个ID返回给浏览器以cookie保存,在服务器中,不但会保存SessionID,而且还会保存其产生的用户信息,这样一来,用户下次访问服务器,通过cookie值的sessionID就可以判断其身份,进而获取这个用户上次记录的信息。
  • 关闭会话之后,当我们重新打开浏览器窗口时,之前的cookie中存放的Sessionid已经不存在了,此时服务器从HttpServletRequest对象中没有检查到sessionid,服务器会再发送一个新的存有Sessionid的cookie到客户端的浏览器中,此时对应的是一个新的会话,而服务器上原先的session等到它的默认时间到之后,便会自动销毁。
    但是如果我把浏览器关闭了呢?这样的话,我该如何再次访问相应的session呢?
  • 首先,服务器中session的声明周期是可以自己来设置的,默认的是30分钟,那么当我们关闭浏览器之后,浏览器中的cookie消失了,但这个服务器中的session其实还没有消亡,(如果我们需要它消亡的话,我们可以调用invalidate方法,这也是网站中的安全退出常见操作之一)。
  • 既然没有消亡,为什么关闭浏览器之后,我们就访问不到了呢?那是因为cookie中的JSESSIONID信息没有了,不会自动携带这个session信息了,服务器找不到对应的session,就会自动添加新的session,这个新添加的session显然不是我们需要的。所以,我们就可以利用cookie来实现这个需求。
  • 只要我们手动为cookie中添加JSESSIONID信息,那么不管你的浏览器是否关闭,我的cookie中都会携带JSESSION信息,这样的话,服务器就一定能够找到对应的session,而不会重新建立一个新的session,这样只要session没有消亡,就一定可以访问到对应的session。

session和cookie的应用场景

session:
除非是纯静态的页面,否则都会用到session来记录用户的行为。

cookie典型应用场景:
1.判断用户是否登陆过网站,以便下次登录时能够直接登录。如果我们删除cookie,则每次登录必须从新填写登录的相关信息。而修改账户密码等操作也需要对其登陆状态进行判断。

2.另一个重要的应用是“购物车”中类的处理和设计。用户可能在一段时间内在同一家网站的不同页面选择不同的商品,可以将这些信息都写入cookie,在最后付款时从cookie中提取这些信息,当然这里面有了安全和性能问题需要我们考虑了。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/299802.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号