HttpSession概述

session也是一个域对象之一,它的范围是在一个会话范围之类有效,session既然是域对象,那么当然就要有getAttribute()和setAttribute()系列的方法了

Token概述

1、Token的引入:Token是在客户端频繁向服务端请求数据,服务端频繁的去数据库查询用户名和密码并进行对比,判断用户名和密码正确与否,并作出相应提示,在这样的背景下,Token便应运而生。

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

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

Session与Token的异同

1、Session是存放在服务器端的,可以保存在:内存、数据库、NoSQL中。它采用空间换时间的策略来进行身份识别,若Session没有持久化落地存储,一旦服务器重启,Session数据会丢失。

2、Token是放在客户端存储的,采用了时间换空间策略,它也是无状态的,所以在分布式环境中应用广泛。

技术选型依据业务而来,特定的场景适合特定的业务,一般购物车功能会采用Session验证,接口校验一般会采用Token验证,具体采用何种方法,需要大家根据自己的业务进行选择。

Servlet HttpSession

Token (放在Header中)

支持的客户端

浏览器(SessionID)

浏览器 , 手机app , 小程序(自定义 , 只要能发http请求的都可以)

生成

Tomcat

代码自己生成

储存

Tomcat储存

缓存服务器储存 (都是存入服务器的内存中)

请求如何传递

Cookie(标准Header),URL后SeesionID

HTTP header , 自定义Token字段

如何过期

按默认或者指定时间:手动设置

自定义过期时间,让缓存失效

如何替换

不能

在用户正在操作但是Token快过期时,自动请求置换重新生成一个新的Token