Tomcat 是在SUN 公司的JSWDK(JavaServer Web DevelopmentKit ,是SUN公司推出的小型Servlet/JSP调试工具)的基础上发展起来的一个优秀的Servlet容器,Tomcat本身完全用java语言编写。
Servlet是一种运行在服务器上的小插件,他所具有的的以下特点:
1、提供了可被服务器加载并执行的程序代码,并服务于来自客户端的请求。
2、Servlet服务器必须支持java。
3、Servlet不依赖浏览器,是允许在服务器端,所以不管浏览器是否支持java,都能请求访问servlet。
Tomcat做为Servlet的容器基本功能如图一
图一
Servlet 的规范规定Servlet不仅可以运行在基于HTTP协议的Web服务器上,还可以运行在基于其他应用协议的服务器上。不过,目前Servlet主要运行在Web服务器上,用来扩展Web服务器的功能。Servlet规范规定,Servlet容器响应客户请求访问特定的Servlet的流程如下:
1、客户发出要求访问特定的Servlet的请求。
2、Servlet 容器接收到客户请求并解析。
3、Servlet 容器创建一个ServletRequest对象,在ServletRequest对象中包含了客户请求信息及其他关于客户的信息,如请求头,请求正文,以及客户机的IP地址等。
4、Servlet容器创建一个ServletResponse对象
5、Servlet 容器调用客户所请求的Servlet的service服务方法,并且把ServletRequst对象和ServletResponse对象做为参数传给该服务方法。
6、Servlet从ServletRequest对象中可获取客户的请求信息。
7、Servlet利用ServletResponse对象来生成响应结果。
8、Servlet容器吧Servlet生成的响应结果发送给客户。
Tomcat的组成如图二
图二
1、<Server> 元素:代表整个Servlet容器组件,是Tomcat的顶层元素。在<Server>元素中可以包含一个或者多个<Service>元素。
2、<Service>元素:包含一个<Engine>元素,以及一个或多个<Connector>元素,这些<Connector>原先共享一个<Engine>元素。
3、<Connector>元素:代表和客户程序时间交互的组件,负责接收客户请求,以及想客户返回响应结果。
4、<Engine>元素:每个<Service>只能有一个<Engine>元素。<Engine>元素处理在同一个<Service>中所有<Contector>元素接收到的客户请求。
5、<Host>元素:在一个<Engine>元素中可以包含多个<Host>元素。每个<Host>元素定义了一个虚拟主机,他可以包含一个或多个Web应用。
6、<Context>元素:使用最频繁的元素。每个<Context>元素代表了运行在虚拟主机上的单个Web应用。在一个<Host>元素中可以包含多个<Context>元素。
Tomcat做为Servlet的容器,有以下三种工作模式
1、做为独立的Servlet容器,如图三
Tomcat作为独立的Web服务器来单独运行,Servlet容器组件做为Web服务器中的一部分二存在,这是Tomcat的默认工作模式。
图三
2、作为其他Web服务器进程内的Servlet容器。如图四
在这种模式下,Tomcat分为Web服务器插件和Servlet容器组件两个部分,Web服务器组件获得用户请求,利用JNI通信机制给Servlet容器组件。JNI指是Java本地调用接口,通过这一接口,Java程序可以和采用其他语言编写的本地程序进行通信。
图四
3、其他Web服务器进程外的Servlet容器。如图五
在这种模式下,Tomcat分为Web服务器组件和Servlet容器组件两部分。Web服务器获取用户请求,并通过IPC通信机制发送给Servlet容器组件。
图五
来源:https://www.cnblogs.com/jeacebolgs/p/6580428.html