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对象,未获取到是否自动创建

Session
SessionSession

HttpSession的细节

  • 浏览器禁用Cookie
    • 方式一∶通过提示信息告知用户,大部分网站采用的解决方式。(推荐)
    • 方式二∶访问时拼接jsessionid标识,通过encodeURL()方法重写地址。(了解)
  • 钝化和活化
    • 钝化∶序列化。把长时间不用,但还不到过期时间的HttpSession进行序列化,写到磁盘上。
    • 活化∶相反的状态。
    • 何时钝化
      第一种情况︰当访问量很大时,服务器会根据getLastAccessTime来进行排序,对长时间不用,但是还没到过期时间的HttpSession进行序列化。
      第二种情况∶当服务器进行重启的时候,为了保持客户HttpSession中的数据,也要对其进行序列化。
  • 注意
    • HttpSession 的序列化由服务器自动完成,我们无需关心。