cookie是客户端浏览器保存服务端数据的一种机制。当通过浏览器去访问服务端时,服务端可以把状态数据以key-value的形式写入到cookie中,存储到浏览器。浏览器下次去服务服务端时,就可以把这些状态数据携带给服务器端,服务器端可以根据cookie去识别使用者。
session表示一个会话,是一个容器对象,是服务端的保存客户端数据的一种机制。servlet会对每一个浏览器请求分配一个session对象。session就是一个concurrenthashmap,可以存储当前会话产生的状态数据。
为什么需要session和cookie?
因为http是无状态的通信协议,服务器端无法知道客户端发送过来的多次http请求是不是属于同一个用户,session用来弥补http无状态的一个不足。服务器端利用session将同一个用户的多次请求记录下来。
因此,基于客户端的cookie和服务端的session机制实现有状态的http协议。
cookie和session的工作过程: