Tomcat 服 务 器是一个 Servlet/Jsp 容器 . 不但支持运行 Servlet 和 Jsp , 还具备作为商业 Java Web 应用容器的特性 , 如 Tomcat 管理和控制平台 , 安全域管理 , Tomcat 阀等 .
Tomcat 作为 Servlet 容器 , 负责把客户请求传送给 Servlet 并把响应结果返回给客户 . 当客户请求某个 Servlet 时 , Servlet 容器将首先创建一个 ServletRequest 对象和 ServletResponse 对象 ( 在 ServletRequest 对象中封装了客户请求信息 ), 然后 Servlet 容器把 ServletRequest 对象和 ServletResponse 对象传给客户所请求的 Servlet , Servlet 把响应结果写到 ServletResponse 中 , 最后由 Servlet 容器把响应结果传给客户 .
Tomcat 的结构 : Tomcat 服务器由一系列可配置的组件构成 . 这些组件在 <CATALINA_HOME> / conf/server.xml 文件中进行配置 , 每个 Tomcat 组件在 server.xml 文件中对应一种配置元素 .
server.xml 的结构如下 :
< Service >
< Connector />
< Engine >
< Host >
< Context >
</ Context >
</ Host >
</ Engine >
</ Service >
</ Server >
所有配置元素分为 4 类 :
1. 顶层类元素 : < Server> 元素和 <Service> 元素 .
2. 连接器类元素 : <Connector/> , 客户与服务器之间的通信接口 .
3. 容器类元素 : <Engine> <Host> <Context> , 用于处理客户请求 .
4. 嵌套类元素 : 如 < Logger> <Valve> <Realm>, 代表可以加入到容器中的组件 .
代表整个Catalina Servlet容器 , <Server>元素可以包含一个或多个<Service>元素.
<Service>元素:
包含一个<Engine>元素 , 以及一个或多个<Connector/>元素 , 这些<Connector/>元素共享一个<Engine>元素.
<Connector/>元素:
代表和客户实际交互的组件 , 负责接收客户请求 , 以及向客户返回响应结果.
<Engine>元素:
每个<Service>元素只能包含一个<Engine>元素. <Engine>元素处理在同一个<Service>元素中所有<Connector/>元素接收到的客户请求.
<Host>元素:
一个<Engine>元素可以包含多个<Host>元素 , 每个<Host>元素定义了一个虚拟主机 , 它可以包含一个或多个web应用.
<Context>元素:
每个<Context>元素代表了运行在虚拟主机上的单个web应用.一个<Host>元素可以包含多个<Context>元素.
Tomcat 各个组件间的嵌套关系如下图所示 :
Tomcat各个组件间响应客户请求的过程如下图所示:
Tomcat 的工作模式 .
1. 独立的 Servlet 容器 .( Tomcat 的默认工作模式 )
2. 进程内的 Servlet 容器 .( 与其它 Web 服务器集成 )
3. 进程外的 Servlet 容器 .( 与其它 Web 服务器集成 )
Servlet容器响应Web客户请求流程的URL时序图,如下: