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();
posted @   半条咸鱼  阅读(100)  评论(0编辑  收藏  举报
(评论功能已被禁用)
相关博文:
阅读排行:
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 没有源码,如何修改代码逻辑?
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
点击右上角即可分享
微信分享提示