第九章 session管理

来源:互联网 发布:淘宝客开通流程 编辑:程序博客网 时间:2024/06/06 10:55

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 中有

这里写图片描述

0 0