zoukankan      html  css  js  c++  java
  • Java Web 深入分析(6) Tomcat

    tomcat是什么:汤姆猫?Javaweb服务器?

    Tomcat是Apache 软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,由Apache、Sun 和其他一些公司及个人共同开发而成。由于有了Sun 的参与和支持,最新的Servlet 和JSP 规范总是能在Tomcat 中得到体现,Tomcat 5支持最新的Servlet 2.4 和JSP 2.0 规范。因为Tomcat 技术先进、性能稳定,而且免费,因而深受Java 爱好者的喜爱并得到了部分软件开发商的认可,成为目前比较流行的Web 应用服务器。    
    

    Tomcat 结构:

    Connector:
    在学Java web基础的时候,提到过当从浏览器传过来http请求之后,web容器会创建一个request和response对象。在Tomcat中,负责该创建工作的是Connector组件。Connector连接器可以有一个或多个,默认情况下会开启两个HTTP协议和AJP协议。

    Container:

    Container容器有四个子容器:Engine、Host、Context和Wrapper,他们之间是父子包含关系。

    通过下面过程在来熟悉这个tomcat内部构造,出来这些容器,tomcat框架架构里面用到了很多设计模式,例如责任链模式,观察者模式,命令模式等等。

    Tomcat Server处理一个http请求的过程

    假设来自客户的请求为:http://localhost:8080/test/test.jsp

    1. 请求被发送到本机端口8080,被在那里侦听的Coyote HTTP/1.1 Connector获得
    2. Connector把该请求交给它所在的Service的Engine来处理,并等待来自Engine的回应
    3. Engine获得请求localhost/wsota/wsota_index.jsp,匹配它所拥有的所有虚拟主机Host
    4. Engine匹配到名为localhost的Host(即使匹配不到也把请求交给该Host处理,因为该Host被定义为该Engine的默认主机)
    5. localhost Host获得请求/wsota/wsota_index.jsp,匹配它所拥有的所有Context
    6. Host匹配到路径为/wsota的Context(如果匹配不到就把该请求交给路径名为""的Context去处理)
    7. path="/wsota"的Context获得请求/wsota_index.jsp,在它的mapping table中寻找对应的servlet ,可以查看我的博文,servlet ->servlet如何工作【http://www.cnblogs.com/humi/p/8168665.html】
    8. Context匹配到URL PATTERN为*.jsp的servlet,对应于JspServlet类
    9. 构造HttpServletRequest对象和HttpServletResponse对象,作为参数调用JspServlet的doGet或doPost方法
      10)Context把执行完了之后的HttpServletResponse对象返回给Host
      11)Host把HttpServletResponse对象返回给Engine
      12)Engine把HttpServletResponse对象返回给Connector
      13)Connector把HttpServletResponse对象返回给客户browser

    <Context path="/PPPP" docBase="D:	esthtml" reloadable="true"/>
    
  • 相关阅读:
    (九)springmvc+mybatis+dubbo+zookeeper分布式架构 整合
    (八)springmvc+mybatis+dubbo+zookeeper分布式架构 整合
    (七)springmvc+mybatis+dubbo+zookeeper分布式架构 整合
    (六)springmvc+mybatis+dubbo+zookeeper分布式架构 整合
    28 android资源文件
    1 ArrayList和LinkedList的区别
    27 MediaPlayer和SurfaceView播放视频会闪黑屏一下
    26 事件分发
    25 Notification通知栏
    24 RadioGroup制作底部按钮
  • 原文地址:https://www.cnblogs.com/humi/p/8120493.html
Copyright © 2011-2022 走看看