第九章 session管理

本文介绍了Tomcat中Session的工作原理及管理方式。重点讲解了管理器组件如何通过不同实现方式来处理Session对象的创建、更新与销毁,并探讨了StandardSession类的作用及其实现细节。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.概述

Catalina 通过一个叫管理器的组件来完成 session 管理工作,该组件由 org.apache.catalina.Manager interface 接口表示。一个管理器通常跟一个上 下文容器相关联,它负责创建、更行以及销毁 session 对象并能给任何请求组件 返回一个合法的session。
默认情况下管理器将 session 对象存储在内存中,但是 Tomcat 也允许将 session 对象存储在文件或者数据库中(通过 JDBC)。Catalina 在 org.apache.catalina.session 包中提供了 session 对象和 session 管理的相关 类型。

二、Sessions

在 servlet 编程中,一个 session 对象使用 javax.servlet.http.HttpSession 接口表示。该接口的标准实现是 StandardSession 类,该类在 org.apache.catalina.session 包中。但是出于安全的原因,管理器并不会将一 个 StandardSession 实例传递给 servlet。而是使用 org.apache.catalina.session 包中的外观类 StandardSession 类。在内部,一 个管理器使用了另一个外观:org.apache.catalina.Session 接口。 (门面模式)
这里写图片描述

三、StandardSession类

StandardSession 类是 Session 接口的标准是实现。另外,实现了 javax.servlet.http.HttpSession 和 org.apache.catalina.Session 之外,它 还实现了 java.lang.Serializable 接口来使得 Session 对象可序列化。
该类的构造器获得一个管理器实例来强制使得每个 Session 对象都有一个管理器。

四、管理器

管理器用来管理 Session 对象。例如它创建 Session 对象并销毁它们。管理器由 org.apache.catalina.Manager 接口表示。在 Catalina 中, org.apache.catalina.session 包中类 ManagerBase 类提供了常用函数的基本实 现。ManagerBase 类有两个直接子类:StandardManager 和 PersistentManagerBase 类。
在运行的时候,StandardManager 将 session 对象存放在内存中。但是,当停止 的时候,它将 Session 对象存放到文件中。当它再次启动的时候,重新载入 Session 对象。
PersistentManagerBase 类作为一个管理器组件将 Session对象存放到二级存储 器中。它有两个直接子类:PersistentManager 和 DistributedManager 类 (DistributedManager)类只在 Tomcat4 中有

这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值