session的底层是基于cookie实现的。
1.浏览器没有cookie,然后发送请求到服务器
2.服务器接收到请求后,通过request.getSession()方法创建会话对象
(注:此方法第一次调用是创建session会话,以后在session没有被销毁前,再次调用都是获取前面创建的session)。
服务器在每次创建session的时候,也会创建cookie,这个cookie的key永远是JESSIONID。value是创建的session的id。
3.通过响应将新创建的session的id,放在cookie里,传给浏览器。
Set-Cookie:JESSIONID=XXX
4.浏览器解析获取到的数据,就马上创建一个cookie对象。有了cookie之后,再次请求服务器,就会把含有session的id的cookie
传给服务器Cookie:JESSIONID=XXX
5.服务器通过request.getSession方法,通过cookie里面的session的id,找到之前创建好的session对象,返回相应的数据。