罗湖建网站公司成都网站建设公司排名
概念
数据保存在服务器HttpSession对象里。
session也是域对象,有setAttribute和getAttribute方法
快速入门
代码
获取session和塞入数据:
获取session获取数据:
请求存储:
请求获取:
数据正常打印:
结论
由于浏览器和服务器都没用关闭,所以上面相当于一次会话的两次请求。
这时候把浏览器关闭,再直接访问demo2:
输出null,说明范围确实是在一次会话的:
一次会话中才能用session来共享数据。
原理分析
竟然共享数据,那么两次请求获取的肯定是同一个session。
那服务器是怎么确保这两个session是同一个的?
!!!session是依赖于cookie的,cookie是通过请求头和响应头来实现的。
1)第一次获取session,没有cookie会在内存中创建一个新的session对象,并且这个session对象有一个唯一的id值。
2)给浏览器做响应的时候会发送一个响应头set-cookie:值是JSSONID=上面的session的Id。
3)浏览器收到cookie头会把cookie信息存储到浏览器内部。
4)下一次再访问当前项目里的其他资源的时候会携带这个cookie头,通过请求头cookie,值:JSSONID=session的Id值。
5)服务器自动去获取这个cookie信息,然后根据cookie信息去查找内存中有没有一个id为带过来的id的session对象。
6)找到了,getSession方法就找到了并返回。