首页 > 代码库 > session知识总结
session知识总结
0.什么是会话?
- 简单理解:打开浏览器到关闭浏览器过程中的操作、请求。
1.Session是什么?
- session是HttpSession的简称;
- 用于保存会话状态;
- 将会话状态保存在服务器端;
- Tomcat实现HttpSession的完整类名及引用:org.apache.catalina.session.StandardSessionFacade@1524e17
2.Session是用户级别的对象。
- 在一次会话过程中,web服务器为用户维护着一个会话对象。
- 在web容器中,存储着一个session列表。
3.为什么当前会话中的每一次请求都可以拿到自己的会话对象?
- 服务器响应浏览器第一次请求的时候,会创建一个session对象,同事向浏览器发送一个Cookie;
- 浏览器再次发出请求的时候,当服务器接收到该Cookie,则判断为是同一次会话。
- Set-Cookie:"JSESSIONID=B6416390E900458658B696659B5CD92B; Path=/prj-session/; HttpOnly"
- Cookie的关联路径:Path=/prj-session/;v
- 这个特殊的Cookie名字是JSESSIONID,value是一个32位长度的字符串;
- 当浏览器再次发送请求,将缓存中的Cookie发送到服务器,服务器端获取Cookie后进行验证;
- 当浏览器关闭之后,这个session对象将被销毁。
4.Cookie被禁用之后怎么办?
- 重写URL:URL;JSESSIONID=B6416390E900458658B696659B5CD92B
5.Seesion对象在什么时候被销毁?
- web服务器中引入session超时的概念;
- 当很长一段时间(这个时间可以设置)session不再被使用时,session将自动销毁
- 设置方法如下:
6.一次会话的含义:
- session对象的创建到session对象的销毁,是一次完整意义的会话。
7.HttpSession中常用的方法:
- Object getAttribute(String name)
- void removeAttribute(String name)
- void setAttribute(String name, Object value)
- void invalidate()
8.范围对象对比:
- ServletContext、HttpSession、HttpServletRequest接口
- ServletContext是应用级别对象;
- HttpSession是会话级别对象;
- HttpServletRequest是请求级别的对象;
- ServletContext在整个应用程序级别共享数据,HttpSession跨请求共享数据,HttpServletRequest 跨Servlet共享数据。
session知识总结