美文网首页
Tomcat简介

Tomcat简介

作者: 小圆圈Belen | 来源:发表于2020-09-21 11:58 被阅读0次

    参考文章:https://blog.csdn.net/u014231646/article/details/79482195

    什么是tomcat

    Tomcat 服务器是一个开源的轻量级Web应用服务器,在中小型系统和并发量小的场合下被普遍使用,是开发和调试Servlet、JSP 程序的首选。
    一个完整的web项目,有客户端(浏览器),服务器端,数据库(另一个服务器),你在本地安装Tomcat,就相当于你把自己电脑变成服务器,在同一个局域网内部,别人用浏览器是可以访问你发布的程序的,当然你可以在本机使用浏览器访问

    tomcat的作用是啥呢

    tomcat所做的事情主要有:开启监听端口监听用户的请求,解析用户发来的http请求然后访问到你指定的应用系统,然后你返回的页面经过tomcat返回给用户。

    tomcat的原理

    tomcat结构图:

    Tomcat主要组件:服务器Server、服务Service、连接器Connector、容器Container。
    其中连接器Connector和容器Container是Tomcat的核心。
    组件之间的关系:一个容器Container和一个或多个连接器Connector组合在一起,加上其它的一些组件共同组成了一个服务Service,服务器Server提供一个或多个服务Service。

    Connector
    • 一个Connector将在某个指定的端口上侦听客户请求,接收浏览器的发过来的 tcp 连接请求,创建一个 Request 和 Response 对象分别用于和请求端交换数据,然后会产生一个线程来处理这个请求并把产生的 Request 和 Response 对象传给处理Engine(Container中的一部分),从Engine出获得响应并返回客户。
    • Tomcat中有两个经典的Connector,
      (1)一个直接侦听来自Browser的HTTP请求,HTTP/1.1 Connector在端口8080处侦听来自客户Browser的HTTP请求,即静态信息请求。
      (2)另外一个来自其他的WebServer请求。AJP/1.3 Connector在端口8009处侦听其他Web Server(其他的HTTP服务器)的Servlet/JSP请求,即动态信息请求。
    • Connector 最重要的功能就是接收连接请求然后分配线程让 Container 来处理这个请求,所以这必然是多线程的,多线程的处理是 Connector 设计的核心。
    Container

    Container是容器的父接口,它由四个子容器组件构成,分别是Engine、Host、Context、Wrapper。这四个组件是负责关系,存在包含关系。通常一个Servlet class对应一个Wrapper,如果有多个Servlet定义多个Wrapper,如果有多个Wrapper就要定义一个更高的Container,如Context。
    Context 还可以定义在父容器 Host 中,Host 不是必须的,但是要运行 war 程序,就必须要 Host,因为 war 中必有 web.xml 文件,这个文件的解析就需要 Host 了,如果要有多个 Host 就要定义一个 top 容器 Engine 了。而 Engine 没有父容器了,一个 Engine 代表一个完整的 Servlet 引擎。

    各个子容器的简介:
    1. Engine 容器
      Engine 容器比较简单,它只定义了一些基本的关联关系
    2. Host 容器
      (1)理解:Host 是 Engine 的子容器,一个 Host 在 Engine 中代表一个虚拟主机,这个虚拟主机的作用就是运行多个应用。
      (2)功能:负责安装和展开应用,并且标识这个应用以便能够区分它们;关联子容器外,还有就是保存一个主机应该有的信息。
    3. Context 容器
      (1)理解:Context 代表 Servlet 的 Context,它具备了 Servlet 运行的基本环境,理论上只要有 Context 就能运行 Servlet 了。简单的 Tomcat 可以没有 Engine 和 Host。
      (2)功能:管理它里面的 Servlet 实例。
    4. Wrapper 容器
      (1)理解:Wrapper 代表一个 Servlet,Wrapper 是最底层的容器,它没有子容器了,所以调用它的 addChild 将会报错。
      (2)功能:负责管理一个 Servlet,包括的 Servlet 的装载、初始化、执行以及资源回收。
    其他组件

    Tomcat 还有其它重要的组件,如安全组件 security、logger 日志组件、session、mbeans、naming 等其它组件。这些组件共同为 Connector 和 Container 提供必要的服务。

    HTTP请求过程


    1、用户点击网页内容,请求被发送到本机端口8080,被在那里监听的Coyote HTTP/1.1 Connector获得。
    2、Connector把该请求交给它所在的Service的Engine来处理,并等待Engine的回应。
    3、Engine获得请求localhost/test/index.jsp,匹配所有的虚拟主机Host。
    4、Engine匹配到名为localhost的Host(即使匹配不到也把请求交给该Host处理,因为该Host被定义为该Engine的默认主机),名为localhost的Host获得请求/test/index.jsp,匹配它所拥有的所有的Context。Host匹配到路径为/test的Context(如果匹配不到就把该请求交给路径名为“ ”的Context去处理)。
    5、path=“/test”的Context获得请求/index.jsp,在它的mapping table中寻找出对应的Servlet。Context匹配到URL PATTERN为*.jsp的Servlet,对应于JspServlet类。
    6、构造HttpServletRequest对象和HttpServletResponse对象,作为参数调用JspServlet的doGet()或doPost().执行业务逻辑、数据存储等程序。
    7、Context把执行完之后的HttpServletResponse对象返回给Host。
    8、Host把HttpServletResponse对象返回给Engine。
    9、Engine把HttpServletResponse对象返回Connector。
    10、Connector把HttpServletResponse对象返回给客户Browser。

    相关文章

      网友评论

          本文标题:Tomcat简介

          本文链接:https://www.haomeiwen.com/subject/wgvcyktx.html