Java Web 深入分析 Tomcat 未完待续

Posted 言非言

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java Web 深入分析 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:\\test\\html" reloadable="true"/>

以上是关于Java Web 深入分析 Tomcat 未完待续的主要内容,如果未能解决你的问题,请参考以下文章

数组黑科技(偏性能方面)未完待更新...

字符串匹配算法的使用(未完待整理)

CentOS6最小化安装所需的常用软件(未完待更新)

Python开发 基礎知識 3.類別&方法 (bool & str) (未完待續)

[moka学习笔记]yii2.0数据库查询的多种方法(未完待整理)

深入分析java web技术内幕怎么样