# mini-tomcat **Repository Path**: shawnisacoder/mini-tomcat ## Basic Information - **Project Name**: mini-tomcat - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2020-06-07 - **Last Updated**: 2020-12-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Mini Tomcat 视频讲解请见[这里](mini-tomcat讲解.mp4) ## `Tomcat` 体系结构 从总的方向来说,`Tomcat`分为**连接器组件**和**Servlet容器组件** ### 连接器组件 `Tomcat`支持多种协议的连接,为了屏蔽多种连接协议之间的差异,`Tomcat`提供了`Coyote`连接器。 `Coyote`实际上由3部分组成,如下: ![coyote体系](png/coyote体系.png) * `Endping`: 处理传输层的协议,也就是`TCP/IP`协议; * `Processor`: 处理应用层的协议,也就是`HTTP/HTTPS`协议; 注:`Endpoint` + `Processor` = `ProtocolHandler`(协议处理器) * `Adapter`: 屏蔽不同协议的请求报文差异,将其转换为统一的`Request`对象; ## `Servlet`容器组件 `Tomcat`的容器组件是`Catalina`。由于`Tomcat`的核心就是**`Sevlet`容器组件**, 因此,我们也常常直接的将`Tomcat`视为一款**Servlet容器**。 基于上述的认知,我们可以将`Tomcat`看做是一个**`Catalina`实例**。 每一个`Catalina`实例对应以下组件: ![catalina体系](png/catalina体系.png) * `Server`: 表示整个`Catalina`容器; * `Service`: 一个`Server`可以包含多个`Service`。`Service`没有具体的意义, 在`server.xml`文件中的注释中有一定解释,将`Service`称为**多个`Connector`的集合**; * `Connector`: 可以简单的理解为**接收请求的一个端口**; * `Engine`: 表示请求处理执行引擎,执行引擎及其内部组件都是服务于**执行请求逻辑**的任务的; * `Host`: 表示虚拟主机,其使得`Tomcat`可以实现**对于不同站点来源的请求执行不同的处理操作**; * `Context`: 表示一个`WEB`应用程序; * `Wrapper`: 表示一个`Servlet`;