Tomcat工作原理解析

Tomcat请求过程:

Tomcat请求过程

1.用户点击网页内容,请求被发送到本机端口8080,被在那里监听的Coyote HTTP/1.1 Connector获得。

2.Connector把该请求交给它所在的Service的Engine来处理,并等待Engine的回应。

3.Engine获得请求,匹配所有的虚拟主机Host。

4.Engine匹配到名为localhost的Host(即使匹配不到也把请求交给该Host处理,因为该Host被定义为该Engine的默认主机),Host获得请求,匹配它所拥有的所有的Context。Host匹配到对应请求路径的Context(如果匹配不到就把该请求交给路径名为“ ”的Context去处理)。

5.匹配的Context获得请求,在它的mapping table中寻找出对应的Servlet。

6.构造HttpServletRequest对象和HttpServletResponse对象,作为参数调用Servlet的doGet()或doPost(),执行业务逻辑、数据存储等程序。

7.Context把执行完之后的HttpServletResponse对象返回给Host。

8.Host把HttpServletResponse对象返回给Engine。

9.Engine把HttpServletResponse对象返回Connector。

10.Connector把HttpServletResponse对象返回给客户Browser。


自己实现Tomcat的思路:

1.创建一个ServerSocket类,作为服务端监听器,等待客户端连接的到来,创建Socket来传输TCP/UDP报文。

2.封装请求报文和返回报文。

3.根据请求路径进行请求的分发。

代码实现:

1.Tomcat帮我们实现了关于Http相关的Request和Response,这里自己进行封装。

封装Request
封装Response


2.封装Servlet,以及相关配置、工具

Servlet 基础父类

这里可以多些几个子类,访问不同的地址的时候,由不同的Servlet处理

Servlet子类
配置分发路劲

不同的请求路径,根据ServletMapping中的配置,自己匹配对应的Servlet

Servlet工具

相关测试 : 

根据结果来看,已经完成了请求的分发,以及处理。收工!

程序入口


测试结果

你可能感兴趣的:(Tomcat工作原理解析)