为了让web服务器和web应用这两个不同的软件系统协作,首先要有使它们之间协作的标准接口,Servlet就是其中的主要接口之一, 它规定:
1 服务器能够访问web应用中任何实现了Servlet接口的类
2 web应用中被web服务器动态调用运行的程序应该位于实现Servlet的类中
Servlet就是运行在服务器端的小插件,而SUN把它制定的关于web应用程序和web服务器之间的一系列JAVA标准接口,统称为Servlet规范
Servlet规范把能够发布运行JavaWeb应用程序的web服务器成为Servlet容器,Tomcat就是这样一个优秀的Servlet容器。
Servlet规范规定Servlet容器响应客户端请求的Servlet流程如下:
1 客户端发出访问特定Servlet的请求
2 Servlet容器接受请求并解析
3 Servlet容器创建ServletRequest对象,它包含了客户端的一些请求信息
4 Servlet容器创建ServletResponse对象
5 Servlet容器调用客户端所请求的Serlet中service服务方法,并将ServletRequest和ServletResponse作为参数传入
6 Servlet从ServletRequest中获取客户端请求信息
7 Servlet利用ServletResponse对象生成响应结果
8 Servlet把响应结果发回给客户端
Tomcat由一系列可配置的组件构成,其核心是Servlet容器组件,在service.xml中,每一个xml元素代表一个组件,包括4类组件:
1 顶层元素:包括<Server>和<Service>元素
2 连接器类元素: <Connector>
3 容器类元素:有4中容器类元素,<Engine> <Host> <Context> <Cluster>
4 嵌套元素: 代表可以嵌入到容器中的组件,如: <Value>和<Realm>
它们的作用如下:
1 <Server>元素,代表整个Servlet容器组件,它位于最顶层,可以包含一个或者多个<Service>元素
2 <Service>元素,包含一个或者多个<Connector>元素,包含一个<Engine>元素
3 <Connector>元素,代表客户端与服务器之间的通信接口,负责就收客户端的请求,并且返回服务器响应的结果
4 <Engine>元素,每个<Service>元素只能包含一个<Engine>元素,<Engine>元素处理同一个<Service>下的所有<Connector>元素接受到的客户端请求
5 <Host>元素,在一个<Engine>中可以包含一个或者多个<Host>元素,每个<Host>元素代表一个虚拟主机,它可以包含一个或者多个web应用
6 <Context>元素,在一个<Host>中可以包含一个或者多个<Context>元素,每个<Context>元素代表一个WEB应用。
Tomcat有3中工作模式:
1 作为独立的Servlet容器,这是默认工作模式。此时Tomcat会作为独立的服务器,Servlet容器组件作为服务器的一部分存在
2 作为其他web服务器进程内的Servlet容器,此时Tomcat分为web服务器插件和Servlet容器组件,web服务器插件在其他web服务器进程地址空间内启动一个Jav虚拟机运行Servlet容器组件
3 作为其他web服务器外的Servlet容器组件,此时Tomcat分为web服务器插件和Servlet容器组件,web服务器插件会在其他web服务器进程地址空间之外启动一个Java虚拟机运行Servlet容器组件