Session
HttpSession介绍
- HttpSession:服务器端会话管理技术。
本质也是采用客户端会话管理技术。
只不过在客户端保存的是一个特殊标识,而共享的数据保存到了服务器端的内存对象中。
每次请求时,会将特殊标识带到服务器端,根据这个标识来找到对应的内存空间,从而实现数据共享。
是Servlet规范中四大域对象之一的会话域对象。 - 作用∶可以实现数据共享
域对象 | 功能 | 作用 |
---|---|---|
ServletContext | 应用域 | 在整个应用之间实现数据共享 |
ServletRequest | 请求域 | 在当前的请求或请求转发之间实现数据共享 |
HttpSession | 会话域 | 在当前会话范围之间实现数据共享 |
HttpSession常用方法
方法 | 说明 |
---|---|
void setAttribute(String name,Object value); | 设置共享数据 |
object getAttribute(String name); | 获取共享数据 |
void removeAttribute(String name); | 移除共享数据 |
String getid(); | 获取唯一标识名称 |
void lnvalidate(); | 让session立即失效 |
HttpSession获取
- HttpSession实现类对象是通过HttpServletRequest对象来获取。
方法 | 说明 |
---|---|
HttpSession getSession(); | 获取HttpSession对象 |
HttpSession getSession(boolean create); | 获取Httpsession对象,未获取到是否自动创建 |
HttpSession的细节
- 浏览器禁用Cookie
- 方式一∶通过提示信息告知用户,大部分网站采用的解决方式。(推荐)
- 方式二∶访问时拼接jsessionid标识,通过encodeURL()方法重写地址。(了解)
- 钝化和活化
- 钝化∶序列化。把长时间不用,但还不到过期时间的HttpSession进行序列化,写到磁盘上。
- 活化∶相反的状态。
- 何时钝化
第一种情况︰当访问量很大时,服务器会根据getLastAccessTime来进行排序,对长时间不用,但是还没到过期时间的HttpSession进行序列化。
第二种情况∶当服务器进行重启的时候,为了保持客户HttpSession中的数据,也要对其进行序列化。
- 注意
- HttpSession 的序列化由服务器自动完成,我们无需关心。