Tomcat基础认知

来源:互联网 发布:吐槽王pi知乎 编辑:程序博客网 时间:2024/05/18 13:44

Tomcat作为Servlet容器的基本功能

1、Servlet规范规定,Servlet容器响应客户请求访问特定Servlet的流程如下:

Servlet,顾名思义,是运行在服务器端的小插件。

a. 客户端发出请求访问特定Servlet;
b. Servlet容器接收到客户端请求,对其解析;
c. Servlet容器创建一个ServletRequest对象/实例,包含了如请求头、请求消息体等;
d. Servlet容器创建一个ServletResponse对象;
e. Servlet容器调用客户端所请求的service()服务方法,并且把ServletRequest对象和ServletResponse对象作为参数传递给该service()方法;
f. Servlet从ServletRquest对象中获取客户端的请求信息;
g. Servlet利用ServletResponse对象生成响应结果;
h. Servlet容器把Servlet生成的响应结果发送给客户端。

2、Tomcat的组成结构

Tomcat本身由一些列可配置的组件构成,其核心组件是Servlet容器组件,它是所有其他Tomcat组件的顶层容器。

注意:此部分与Servlet规范无关,不同的Web容器厂商可以以不同的方式来实现符合Servlet规范的Servlet容器。

Tomcat各个组件在conf/server.xml文件中进行配置,每个Tomcat组件在server.xml文件中对应一种配置元素。

xml文件中Tomcat组件元素可以分为4类:
a. 顶层类元素,包括<Server><Service>;
b. 连接器类元素, 即<Connector>,代表介于客户端和服务器之间的通信接口,负责转发消息;
c. 容器类元素, 代表处理客户请求并生成响应结果的组件,有4种容器类元素,分别为<Engine><Host><Context><Cluster>

Engine组件为特定的Service组件处理所有客户端请求;
Host组件为特定的虚拟机处理所有客户端请求;
Context组件为特定的Web应用处理所有客户端请求;
Cluster组件负责为Tomcat集群系统进行会话复制、Context组件的属性复制,以及集群范围内WAR文件的发布;

d. 嵌套类元素,代表可以嵌入到容器中的组件,如<Valve><Realm>等。

3、Tomcat各元素/组件之间的关系

a. <Server>元素,Tomcat顶层元素。包含一或多个<Service>元素;
b. <Service>包含一个<Engine>,一对一,以及一个或多个<Connector>;
<Engine>元素在同一个<Service>中所有<Connector>元素接收到的客户端请求;
c. <Host>,包含一个或多个Web应用;一个<Engine>可以包含多个<Host>
d. <Context>元素,使用最频繁的元素。每个<Context>代表了运行在虚拟机上的单个Web应用。一个<Host>可以包含多个<Context>元素。

Tomcat自带了一个名为“Catalina”的Engine组件。

小结

1、Tomcat是符合SUN的Servlet规范的优秀Servlet容器。Servlet规范为Servlet容器与JavaWeb应用之间协作制定了标准接口,其中最重要的接口就是Servlet。
2、Tomcat自身的实现由一系列可配置的组件构成,用户可以在server.xml配置文件中对这些组件进行配置。
3、Tomcat本身是Java程序,需要通过JDK提供的JVM才能运行。运行在JVM进程中。运行Tomcat要配置JAVA_HOME环境变量。特殊情况下,还要配置CATALINA_HOME环境变量。

参考《Tomcat与Java Web开发技术详解》第2版第2章

原创粉丝点击