Session,Cookies和Token区别,以及“会话”的浅析

1、会话

        简单的说,打开浏览器,访问服务器,直到浏览器关闭,称为一次会话。

Session生成机制:

        首先服务器必须调用request.getSession(),如果请求中没有带sessionID的cookie,则服务器一定会创建一个新的Session对象,如果请求中带了sessionID则服务器会根据传入的SessionId找到对应的session对象,若该session对象已经失效了,则会创建新的session对象,若该session没有失效则会使用找到的session对象

       注意:当浏览器关闭,重启浏览器时,seesion还存在于服务器,但是由于关闭浏览器已经使存在内存中的cookie失效了,该cookie存储了用于找到session的sessionID,所以sessionID丢失了导致找不到服务器中对应session,而session并没有销毁。相当于客户端钥匙开服务器端锁,会话结束钥匙丢了,但服务器锁还在。

        session销毁的两种情况:

                1、手动销毁,调用invalidate()

                2、自动销毁,在web.xml中设置session过期时间

       关闭浏览器失效,同一浏览器共享session,不同浏览器窗口不共享session。

2、Cookies

  • 是客户端技术
  • 保存在客户端硬盘上
  • 生命周期:创建cookies时预设的生命周期或永久有效(不设置则默认会话结束就失效
  • 单个cookie保存的数据不能超过4K,很多浏览器都限制一个站点最多保存20个cookie。只能保存字符串类型数据
  • cookie不安全,但是可以加密,用户体验好

记住密码功能就是使用永久cookie写在客户端电脑,下次登录时,自动将cookie信息附加发送给服务端

3、Session

  • 是服务端技术
  • 保存在服务器上
  • 生命周期:“相当于”会话结束就失效,即客户端启动到关闭,如浏览器一关闭session就失效(此处不是session真正消失,参考前文提到的session注意内容,因此用“相当于”)
  • Session对象保存数据量无限制。可以保存更为复杂的数据类型
  • session安全,但容易失效,用户体验很差

Session中sessionID以cookie保存

        用户在连接服务器时,由服务器生成一个唯一的SessionID,用该SessionID 为标识符来存取服务器端的Session存储空间。SessionID这一数据则是保存到客户端,用Cookie保存的,用户提交页面时,会将这一 SessionID提交到服务器端,来存取Session数据。所以一旦客户端禁用Cookie,那么Session也会失效。

4、Token

        Token的定义:Token是服务端生成的一串字符串,以作客户端进行请求的一个令牌,当第一次登录后,服务器生成一个Token便将此Token返回给客户端,以后客户端只需带上这个Token前来请求数据即可,无需再次带上用户名和密码。

        Token的好处:Token的目的是为了减轻服务器的压力,减少频繁的查询数据库,使服务器更加健壮。

总结:将登陆信息等重要信息存放为SESSION;其他信息如果需要保留,可以放在COOKIE中

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值