1 / 17
文档名称:

servlet底层原理.doc

格式:doc   大小:378KB   页数:17页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

servlet底层原理.doc

上传人:2028423509 2022/6/22 文件大小:378 KB

下载得到文件列表

servlet底层原理.doc

相关文档

文档介绍

文档介绍:-
. z.
Servlet底层原理
从 Servlet 容器说起
要介绍 Servlet 必须要先把 Servlet 容器说清楚,Servlet 与 Servlet 容器的关系) {
initSimpleAuth();
}
ct*.setRealm(defaultRealm);
ct*.addLifecycleListener(new DefaultWeb*mlListener());
Conte*tConfig ct*Cfg = new Conte*tConfig();
ct*.addLifecycleListener(ct*Cfg);
ct**ml("org/apache/catalin/startup/NO_DEFAULT_*ML");
if (host == null) {
getHost().addChild(ct*);
} else {
(ct*);
-
. z.
}
return ct*;
}
前面已经介绍了一个 Web 应用对应一个 Conte*t 容器,也就是 Servlet 运行时的 Servlet 容器,添加一个 Web 应用时将会创立一个 StandardConte*t 容器,并且给这个 Conte*t 容器设置必要的参数,url 和 path 分别代表这个应用在 Tomcat 中的访问路径和这个应用实际的物理路径,这个两个参数与清单 1 中的两个参数是一致的。其中最重要的一个配置是 Conte*tConfig,这个类将会负责整个 Web 应用配置的解析工作,后面将会详细介绍。最后将这个 Conte*t 容器加到父容器 Host 中。
接下去将会调用 Tomcat 的 start 方法启动 Tomcat,如果你清楚 Tomcat 的系统架构,你会容易理解 Tomcat 的启动逻辑,Tomcat 的启动逻辑是基于观察者模式设计的,所有的容器都会继承 Lifecycle 接口,它管理者容器的整个生命周期,所有容器的的修改和状态的改变都会由它去通知已经注册的观察者〔Listener〕,关于这个设计模式可以参考" Tomcat 的系统架构与设计模式,第二局部:设计模式"。Tomcat 启动的时序图可以用图 2 表示。
图 2. Tomcat 主要类的启动时序图〔查看大图〕
-
. z.
上图描述了 Tomcat 启动过程中,主要类之间的时序关系,下面我们将会重点关注添加 e*amples 应用所对应的 StandardConte*t 容器的启动过程。
当 Conte*t 容器初始化状态设为 init 时,添加在 Conte* 容器的 Listener 将会被调用。Conte*tConfig 继承了 LifecycleListener 接口,它是在调用清单 3 时被参加到 StandardConte*t 容器中。Conte*tConfig 类会负责整个 Web 应用的配置文件的解析工作。
Conte*tConfig 的 init 方法将会主要完成以下工作:
创立用于解析 *ml 配置文件的 conte*tDigester 对象
读取默认 conte*t.*ml 配置文件,如果存在解析它
读取默认 Host 配置文件,如果存在解析它
读取默认 Conte*t 自身的配置文件,如果存在解析它
设置 Conte*t 的 DocBase
Conte*tConfig 的 init 方法完成后,Conte*t 容器的会执行 startInternal 方法,这个方法启动逻辑比拟复杂,主要包括如下几个局部:
创立读取资源文件的对象
创立 ClassLoader 对象
设置应用的工作目录
启动相关的辅助类如:logger、realm、resources 等
修改启动状态,通知感兴趣的观察者〔Web 应用的配置〕
子容器的初始化
获取 ServletConte*t 并设置必要的参数
初始化“load on startup〞的 Servlet
Web 应用的初始化工作
Web 应用的初始化工作是在 Conte*tConfig 的 config