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:\test\html" reloadable="true"/>

最新文章

  1. PHP入门part4
  2. UVALive 4987---Evacuation Plan(区间DP)
  3. Chap2: question: 1 - 10
  4. 【转载】大数据量传输时配置WCF的注意事项
  5. Linux中安装和使用rz、sz命令
  6. 详解C# 迭代器[转]
  7. ntpdate公司测试
  8. javascript中 IE事件处理程序中try catch用法
  9. 验证身份证合法性的js
  10. Codeforces Round #254 (Div. 1)-A,B
  11. 复制(6)——分发者(Distributor)
  12. oracle_恢复流程图
  13. java设计模式之三单例模式(Singleton)
  14. 在Delphi下使用迅雷APlayer组件进行免注册开发
  15. centOS 6 服务管理与服务脚本
  16. junit搭配hamcrest使用
  17. Python之列表
  18. 前端 - jquery方式 / iframe +form 方式 上传文件
  19. Set集合中的treeSet问题:cannot be cast to java.lang.Comparable;
  20. maven的pom.xml文件标签含义

热门文章

  1. Locust - A modern load testing framework https://locust.io/
  2. python定义接口继承类
  3. Javescript——数据类型
  4. LeetCode_190. Reverse Bits
  5. 【Leetcode_easy】804. Unique Morse Code Words
  6. 【Leetcode_easy】706. Design HashMap
  7. Spring Aop(十六)——编程式的自定义Advisor
  8. 锚点/JQ:点击导航跳到网页中的指定位置
  9. 【VS开发】TCP服务端如何判断客户端断开连接
  10. 【ARM-Linux开发】使用QT和Gstreanmer 遇到的一些问题