Session:称为“会话控制”。Session 对象存储特定用户会话所需的属性及配置信息。
(1)当用户在应用程序的 Web 页之间跳转时,存储在 Session 对象中的变量将不会丢失,而是在整个用户会话中一直存在下去。
(2)当用户请求来自应用程序的 Web 页时,如果该用户还没有会话,则 Web 服务器将自动创建一个 Session 对象。
(3)当会话过期或被放弃后,服务器将终止该会话。
Session 对象最常见的一个用法就是存储用户的首选项。例如,如果用户指明不喜欢查看图形,就可以将该信息存储在 Session 对象中。
Session机制:
- session机制采用的是在服务器端保存 HTTP 状态信息的方案 。
- 服务器使用一种类似于散列表的结构(也可能就是使用散列表)来保存信息。
- 当程序需要为某个客户端的请求创建一个session时,服务器首先检查这个客户端的请求里是否包含了一个session标识(即sessionId),如果已经包含一个sessionId则说明以前已经为此客户创建过session,服务器就按照session id把这个session检索出来使用(如果检索不到,可能会新建一个,这种情况可能出现在服务端已经删除了该用户对应的session对象,但用户人为地在请求的URL后面附加上一个JSESSION的参数)。如果客户请求不包含sessionId,则为此客户创建一个session并且生成一个与此session相关联的sessionId,这个session id将在本次响应中返回给客户端保存。
![](https://i-blog.csdnimg.cn/blog_migrate/3c9cbdda758eb2767b34b2a2e1d14f1c.png)
1. HttpSession对象的创建
当客户端浏览器第一次访问服务器时,服务器为每个浏览器创建不同的HttpSession对象。在服务器端使用request.getSession()方法来获得HttpSession对象,并以此来使用HttpSession接口为我们提供的防法
2. HttpSession对象的使用
在创建HttpSession对象后,使用该对象进行数据的存取,以进行数据的传递。在此过程中我们常用的方法如下。
(1) void setAttribute(String name,Object value);进行数据的保存。
(2) Object getAttribute(String name):进行数据的读取。
3. HttpSession对象的结束
在以下3种情况下,可以结束session。
(1) 关闭浏览器,结束session
(2) 调用HttpSession的invalidate()方法,删除HttpSession对象和数据
(3) 两次访问时间间隔大于session定义的非活动时间间隔。
在session结束时,服务器会清空当前浏览器相关的数据信息。
参考:https://blog.csdn.net/yuchao2015/article/details/55806504