Tomcat的工作流程&原理

本文深入解析了Tomcat服务器的工作流程,从请求被发送到处理完成的全过程,包括Connector监听请求、Engine匹配虚拟主机、Host查找Context、Context匹配Servlet及响应返回给客户端的详细步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

相信大家在做JavaWeb项目的时候,都会用到这个服务器,有部分人和我一样,就是会使用,会配置,但是对于其具体是如何工作的还是不够了解,所以接下来就一起看看吧! 看完你就会明白了
首先假设一个请求:
http://localhost:8080/chen/index.jsp
1请求被发送到8080端口,被对应的Connector侦听到该请求并将获得的请求发送给Engine来处理,并等待来自Engine的回应并返回给客户

2Engine从Connector那里获得该对应的请求localhost:8080/chen/index.jsp,并进行匹配该对应的虚拟主机Host(其Engine中,可以配置多个虚拟主机)

3Engine匹配到名为localhost的Host(一般localhost为默认主机)

4localhost Host获得请求chen/index.jsp并匹配其所拥有的的Context(一个Context对应一个Web应用,一个Web应用由一个或者多个Servlet组成
)如下,是Tomcat中的web.xml配置,对于一个web应用,其默认自开启了JspServlet,还有ssi,cgi等Servlet

  <!-- The mapping for the default servlet -->
    <servlet-mapping>
        <servlet-name>default</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>

    <!-- The mappings for the JSP servlet -->
    <servlet-mapping>
        <servlet-name>jsp</servlet-name>
        <url-pattern>*.jsp</url-pattern>
        <url-pattern>*.jspx</url-pattern>
    </servlet-mapping>

    <!-- The mapping for the SSI servlet -->
<!--
    <servlet-mapping>
        <servlet-name>ssi</servlet-name>
        <url-pattern>*.shtml</url-pattern>
    </servlet-mapping>
-->

    <!-- The mapping for the CGI Gateway servlet -->

<!--
    <servlet-mapping>
        <servlet-name>cgi</servlet-name>
        <url-pattern>/cgi-bin/*</url-pattern>
    </servlet-mapping>
-->

5匹配到路径为path="/chen"的Context,并获得请求/chen/index.jsp,并在其mapping table中寻找对应的Servlet,Context匹配到URL PATTERN后缀名为.jsp的Servlet,对应于JSPServlet类*

    <!-- The mappings for the JSP servlet -->
    <servlet-mapping>
        <servlet-name>jsp</servlet-name>
        <url-pattern>*.jsp</url-pattern>
        <url-pattern>*.jspx</url-pattern>
    </servlet-mapping>

6构造HttpServletRequest对象和HttpServletResponse对象,作为参数调用JspServlet的doGet或doPost方法

7Context将执行完毕之后的HttpServletResponse对象返回给Host

8Host将HttpServletResponse对象返回给Engine

9Engine将HttpServletResponse对象返回给Connector

10Connector将HttpServletResponse对象返回给客户浏览器

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值