Cookie&Session

会话技术

什么是会话?

会话指的是客户端和服务器交互通讯的过程。

什么是会话技术

HTTP 是一种无状态协议,每当用户发出请求时,服务器就会做出响应,客户端与服务器之间的联系是离散的、非连续的。当用户在同一网站的多个页面之间切换时,根本无法确定是否为同一用户。

Cookie

什么是Cookie

Cookie 实际上是小量信息,是由 Web 服务器创建的,将信息存储在用户计算机上的文件。当用户通过浏览器访问服务器的时候,浏览器会自动携带早前存储的 cookie,传递给服务器。

Cookie的分类

  1. 临时性 Cookie

浏览器退出后就会删除,cookie<0

  1. 持久性 Cookie

通过 setMaxAge 来设置 Cookie 的生命周期

Cookie的问题

  1. Cookie 的大小有限制,每个服务器最多不超过20个
  2. Cookie 是存放在客户端上的,信息不安全,有截获的可能,一般 Cookie 不会存放一些隐私数据

Session

什么是 Session

Session 是基于 Cookie 的一种会话机制。Session 服务器上的一段内存空间,可以用来存储数据
Cookie 是服务器返回一小份数据给客户端,并且存放在客户端上。 Session 是,数据存放在服务器端

Cookie 和 Session 的对比

  1. cookie

数据存放在客户端
数据不安全
减轻服务器压力,用户磁盘占用比较多
存放的数据有限

  1. Session

数据存放在服务器端
数据相对比较安全
服务器压力大一点
存放的数据依赖服务器的内存空间

3.Session 和 Cookie 的实验

  • 实验一:打开浏览器,访问 Session 存值方法,不关浏览器,然后打开新的选项卡,接着访问 Session 取值方法,结果是新的选项卡可以看到数据

  • 实验二:打开浏览器,访问 Session 存值方法,关闭浏览器,重新打开浏览器,接着访问 Session 取值方法,结果是无法看到数据

原因:

  • 第一次访问:Session 没有创建,并且请求对象里面也不带任何的 cookie 过来。那么这个时候会在内存中创建一个新的 session 区域,并且把这个 session 的 id 值放到 cookie 里面给我们的浏览器返回,这些事情是服务器端自己做的,所以 cookie 是一个临时性的 cookie,关闭浏览器就销毁 cookie 了。
  • 第二次访问:浏览器会把之前的那个 cookie 带过来,服务器收到了 cookie,里面有我们上次给的 sessionid 的值,那么这个时候再调用 request.getSession(),它先会拿我们带过来的 id,到内存里面去找有没有 session 的 id 值跟这个 cookie 带过来的一样,如果有,就直接返回这个内存空间,否则就创建新的 session 空间。

Session 销毁的细节

  1. 关闭浏览器并不能让 Session 销毁。因为 Session 是服务器的一块内存空间,它的销毁不依赖于客户端的浏览器关闭还是不关闭。
  2. 在此访问的时候,我们的浏览器已经没有了那个 Session id 的值,所以就找不到了以前的那块内存空间。所以打开浏览器重新访问,会拿到的是全新的 Session 空间。但是原来的那个 Session 还存在,只不过我们无法操作它
  3. 如果真的想操作以前的 Session,我们要手动往 cookie 里面存 Session id 的值,并且设置持久性 cookie。并且 cookie 的那个 name不能乱写,要写 JSESSIONID。
  • 销毁 Session
  1. invalidate()
  2. 关闭服务器
  3. 自动失效。有效期默认30分钟

Session 的作用范围和生命周期

  • 作用范围

一次会话范围内有效(不关闭浏览器)

  • 生命周期
    • 何时创建
      第一次调用 request.getSession()就创建
    • 何时销毁
      关闭服务器
      Session 超时了
      调用 invalidate,让空间失效,作废
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值