Session
概述
1、Session:会话
2、只有一个接口:HttpSession
3、用来维护一个客户端和服务器之间关联的一种技术
4、每个客户端都有自己的一个 Session 会话
5、Session 会话中,常用来保存用户登录之后的信息
获取
1、第一次调用,则创建 HttpSession 对象;之后调用,则获取第一次调用的对象
public HttpSession getSession();
2、判断是否为新创建的 HttpSession,是,则返回 true;否,则返回 false
public boolean isNew();
3、获取唯一标识 id
public String getId();
Session 域数据
1、保存作用域:与具体的 Session 对象对应
2、获取
public Object getAttribute(String name);
3、设置
public void setAttribute(String name, Object value);
4、删除
public void removeAttribute(String name);
Session 生命周期
1、默认生命时长:1800秒
2、设置指定 Session
public void setMaxInactiveInterval(int interval);
3、获取指定 Session
public int getMaxInactiveInterval();
4、 全局修改:Tomcat 服务器的配置文件 web.xml 中默认有以下的配置,表示配置当前 Tomcat 服务器下所有的 Session 超时配置默认时长为:30分钟
<session-config>
<session-timeout>30</session-timeout>
</session-config>
Session 关联技术
1、底层基于 Cookie 技术实现
客户端(浏览器) | 服务器(Tomcat) |
没有 Cookie 情况下,发送请求 | 创建 Session,并创建 Cookie 对象(Set-Cookie: JSESSIONID=新创建 Session 的 id 值) |
解析数据,创建 Cookie 对象 | 通过响应,新创建的 Session id 值返回到客户端 |
有 Cookie 情况下,以 Cookie 形式把 Session id 发送到客户端 | 通过 Cookie id 值查找已创建的 Session 对象,并返回 |
HTTP 无状态问题
1、服务器无法判断多个请求之间,是同一客户端,还是不同客户端
2、会话跟踪技术:客户端第一次发送请求到服务器,服务器获取 session,若获取不到,则创建新的 session,然后响应给客户端,下次客户端给服务器发请求时,附带 sessionID 到服务器,那么服务器可以区分不同客户端
3、常用 API
(1)获取当前的会话,若不存在,则创建一个新的会话
public HttpSession getSession();
(2)传入 true,与(1)相同;传入 false,获取当前会话,若不存在,则返回 null,不创建
public HttpSession getSession(boolean create);
(3)获取 sessionID
public String getId();
(4)判断当前 session 是否为新创建的
public boolean isNew();
(5)获取 session 的非激活间隔时长,默认 1800 秒
public int getMaxInactiveInterval();
(6)强制性使会话失效
public void invalidate();
(7)获取会话上一次访问时间
public long getLastAccessedTime();
(8)获取会话创建时间
public long getCreationTime();
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 没有源码,如何修改代码逻辑?
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战