我的Java之旅 第七课 JAVA WEB 会话管理

1、隐藏域

      隐藏域其实不是Servlet/JSP的会话管理机制的内容,但它能实现简单的页面状态记录的效果。
2、Cookie
   Cookie类
   setMaxAge() 设置有效期,单位秒。如果不设置有效期,则关闭浏览器后失效。
   request.getCookies()取得Cookie,返回Cookie类型数组。
  cookie.getName();cookie.getValue()   取得cookie的key和value值。
  cookie.setHttpOnly()  不被客户端脚本读取。
  cookie.isHttpOnly() 是否被标识为仅用于HTTP。
3、URL中记录信息,如分页,查询条件等。
4、HttpSession 会话管理 
  HttpSession非线程安全,需要注意共享存取问题。
  request.getSession() 取得session对象。
  session.setAttribute()和 session.getAttribute()
  session.invalidate()   使session失效
 Session原理
      每个Session对象都有一个唯一ID,称为SessionId。getId()可以取得。这个Id默认会通过Cookie存储在浏览器中,当再次请求时,浏览器会同数据一起发回服务器,这样,服务器就可以区分不同
浏览器(客户端)在服务器存储的数据了。浏览器存储SessionId的Cookie默认是关闭浏览器就失效,所以已登录的网站当浏览器全关再打开时,会丢掉登录状态。在这里,看似Session数据也没有了,其实
服务器端的数据还在,只是SessionId没有了,所以,Session数据是要定期清理的(设置失效)。
      可以执行HttpSession的setMaxInactiveInterval() 设定浏览器多久没有请求的话,自动失效。单位是秒。也可以在web.xml中设置,但单位是分钟。
      当浏览器被禁用Cookie时,如果仍要使用Session记录状态,就必须借助URL来记录SessionId了。
原文地址:https://www.cnblogs.com/net515/p/6494098.html