tomcat服务器时一个免费开源的Web服务器,属于轻量级应用服务器。在中小型系统和并发访问客户不是很多的场合下被普遍使用。一般来说,tomcat虽然和apache、nginx这些Web服务器一样具有处理HTML页面的功能,但是由于其处理静态页面的能力远不如apache和nginx,所以tomcat一般是作为一个servlet和JSP容器,单独运行在后端。
tomcat由一系列组件构成,其中核心组件有三个:
web容器:完成web服务器的功能
servlet容器:名字为catailna,用于处理servlet代码,Catalina 是 Tomcat 的核⼼ , 其他模块都是为Catalina 提供⽀撑的
JSP容器:用与将JSP动态网页翻译成servlet代码
因此,tomcat是web应用服务器,也是servlet容器。tomcat作为servlet容器,负责处理客户请求,把请求传给servlet,并将servlet的响应传送回给客户。
servlet是Java Servlet的简称,可以理解为一个服务链接器,是用于Java编写的服务器端程序,具有独立与平台和协议的特性,简单理解:servlet就是一个中间件,包含了接口和方法,将客户端和数据库链接,从而实现动态网页的创建。
JSP 全称 Java Server Pages,是一种动态网页开发技术。它使用JSP标签在HTML网页中插入Java代码。标签通常以 <% 开头,以 %> 结束。
JSP是一种Java servlet,主要用于实现Java web 应用程序的用户界面部分。
JSP通过网页表单获取用户输入数据、访问数据库及其他数据源,然后动态地创建网页。
这就是Tomcat服务器的内部结构,最顶层的容器是Server,代表着整个服务器,整个 Tomcat 的生命周期由Server 控制,一个 Server 至少包含一个 Service(至于最多可以包含多少个 Service,一是看 Tomcat 本身的配置,二是看服务器的硬件配置是否能承载得了)
一个Tomcat中只有一个Server,一个Server可以包含多个Service,一个Service只有一个Container,但是可以有多个Connectors,这是因为一个服务可以提供多个连接,如同是提供Http和Https链接
对外提供的web服务。主要包含Connector和 Container两个核心组件,以及其他功能组件。Tomcat可以管理多个Service,且各Service 之间相互独立
Service 又包含两个主要的部分:Connector 和 Container,这两个组件是 Tomcat 的心脏
Connector(连接器)将Service和Container连接起来,负责对外接收和响应请求,它是Tomcat与外界的交通枢纽,监听端口接收外界请求,并把来自客户端的请求转发到Container(容器),最后将容器处理后的结果响应给外界,这就是它为什么称作连接器的原因。
Container 负责对内处理业务逻辑,用于封装和管理 Servlet,以及处理具体的 Request 请求,其内部由 Engine、Host、Context和wrapper 四个容器组成,用于管理和调用Servlet相关逻辑。
每个Service 会包含一个Container容器。在Container内部包含了4个子容器:4个子容器的作用分别是:
(1) Engine:引擎,用来管理多个虚拟主机,一个Service最多只能有一个Engine:
(2)Host:代表一个虚拟主机,也可以叫站点,通过配置 Host 就可以添加站点;
(3)Context:代表一个 web 应用,包含多个Servlet封装器;
(4) wrapper:封装器,容器的最底层。每一Wrapper封装着一个Servlet,负责对象实例的创建、执行和销毁功能。
Engine、Host、Context和 wrapper,这四个容器之间属于父子关系。
容器由一个引擎可以管理多个虚拟主机。每个虚拟主机可以管理多个web应用。每个web应用会有多个Servlet封装器
1、用户在浏览器中输入网址,请求被发送到本机端口8080,被在那里监听的 Connector获得;
2、Connector 把该请求交给它所在的Service 的 Engine (Container)来处理,并等待Engine的回应;
3、请求在Engine、Host、Context和Wwrapper 这四个容器之间层层调用,最后在Servlet 中执行对应的业务逻辑、数据存储等。
4、执行完之后的请求响应在Context、Host、Engine容器之间层层返回,最后返回给Connector,并通过Connector 返回给客户端。