欢迎关注
Java
面试系列,不定期更新面试小短文。欢迎一键三连!
Cookie
是客户端浏览器用来保存服务端数据的一种机制,当我们通过浏览器去进行网页访问的时候,服务器可以把某一些状态数据以key-value
的形式写入到Cookie
中,然后存储到客户端浏览器。下一次再访问服务器的时候,我们可以携带这一些状态数据发送到服务器端,服务器端可以根据Cookie
里面携带的内容去识别使用者。
Session
它表示一个会话,它是属于服务器端的一个容器对象,默认情况下,针对每一个浏览器的请求,Servlet
容器都会分配一个Session
对象,Session
本质上可以认为是一个ConcurrentHashMap
,它可以用来存储当前会话产生的一些状态数据。
HTTP
协议本身是一个无状态协议,也就是说,服务器端并不知道客户端发送过来的多次请求是属于同一个用户,所以Session
是用来弥补HTTP
无状态的一个不足,服务器端可以利用Session
来存储客户端在同一个会话里面产生的多次请求的记录,基于服务器的Session
存储机制,再结合客户端的Cookie
机制,我们就可以去实现一个有状态的HTTP
协议。
工作原理如下:
客户端第一次访问服务器端的时候,服务器端会针对这次请求创建一个会话,并且生成一个唯一的sessionId
来标识这个会话,然后服务器端把这个sessionId
写入到客户端浏览器的cookie
里面,用来去实现客户端状态的保存,接着在后续的请求里面,每一次都会携带sessionId
,服务器端就可以根据sessionId
来识别当前这个会话的状态。