Web 开发会话技术 -Session
前言
Session技术是用在什么地方?
例如:不同的用户登录网站后,不管该用户浏览该网站哪个页面,都可显示登录名, 还可以随时查看自己购物车中的商品, 是如何实现的
Session介绍
session是什么?
Session 是服务器端技术,可以保存登录用户的信息 , 将数据放入到 Session 中,供用户在访问不同页面时,实现跨页面访问数据, 即存储数据。
session 存储结构
session 相当于容器类似 HashMap,有两列(K-V),每一行就是 session 的一 个属性。
每个属性包含有两个部分,一个是该属性的名字(String),另外一个是它的值(Object)
Sesson 原理示意图
session 底层实现机制图解
使用方法
创建和获取 Session:
HttpSession hs=request.getSession()
如果有Session就直接获取,没有就创建,创建成功后会分配一个SessionID。
向 session 添加属性: hs.setAttribute(String name,Object value);
从 session 得到某个属性 Object obj=hs.getAttribute(String name);
从 session 删除调某个属性: hs.removeAttribute(String name);
每个 Session 都有 1 个唯一标识 Id 值:hs.getId();
session 生命周期
public void setMaxInactiveInterval(int interval) 设置 Session 的超时时间(以秒为单位), 设置正数超过指定的时长,Session 就会被销毁。Tomcat 有一个线程专门检查会话的空闲时间是否超过设定的最大值,超过就销毁此会话。
负数表示永不超时
public int getMaxInactiveInterval()获取 Session 的超时时间
public void invalidate() 让当前 Session 会话立即无效
如果没有调用 setMaxInactiveInterval() 来指定 Session 的生命时长,Tomcat 会以 Session 默认时长为准,Session 默认的超时为 30 分钟, 想要修改可以在 tomcat 的 web.xml 设置。
生命周期指的是 :客户端/浏览器两次请求从关闭到再次打开的间隔时间,不是登录时间的累积时长。