`
onlyor
  • 浏览: 370600 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

Tomcat学习(一) - Tomcat结构以及处理一个请求的过程

 
阅读更多

1. Tomcat结构
Tomcat是一个基于组件的服务器,它的构成组件都是可配置的,其中最外层的 组件是Catalina Servlet容器,其他的组件按照一定的格式要求配置在这个顶层容器中。Tomcat的各个组件是在<TOMCAT_HOME>\conf \server.xml文件中配置的,Tomcat服务器默认情况下对各种组件都有默认的实现,下面通过分析server.xml文件来理解Tomcat 的各个组件是如何组织的。server.xml文件的基本组成结构如下。

 

 


XML配置文件结构
<Server>                     顶层类元素:一个配置文件中只能有一个<Server>元素,可包含多个Service。
    <Service>                顶层类元素:本身不是容器,可包含一个Engine,多个Connector。
        <Connector/>         连接器类元素:代表通信接口。
           <Engine>   容器类元素:为特定的Service组件处理所有客户请求,可包含多个Host。
              <Host>    容器类元素:为特定的虚拟主机处理所有客户请求,可包含多个Context。
                 <Context>   容器类元素:为特定的Web应用处理所有客户请求。
                 </Context>
               </Host>
              </Engine>
     </Service>
</Server>

1)Service
Service组件是一些Connector组件的集合,它本身不是一个容器,所以在这里不能定义日志等组件。一个Service组件中只能有一个Engine组件,可以包含多个Connector组件。

2)Connector组件
Connector组件表示一个接口,通过这个接口接收客户的请求,然户发送给其他的容器组件,最后再把服务器的响应结果传递给客户。

3) Engine, Host和context
上 面介绍的3个组件本身并不能处理客户请求,也不能生成响应。在Tomcat中只有3个组件是可以处理客户请求并生成响应的,这3个组件分别是 Engine、Host和Context组件。这3个组件分别代表了不同的服务范围,通过嵌套关系可以知道3个组件的范围有如下的关 系:Engine>Host>Context。
a.Engine组件下可以包含多个Host组件,它为特定的Service组件处理所有客户请求。
b.一个Host组件代表一个虚拟主机,一个虚拟主机中可以包含多个Web应用(Context组件)。
c.Context组件代表一个Web应用。
Tomcat的各个组件关系,可以用下图描述。

 

 

 

2. Tomcat处理一个HTTP请求的过程
假设来自客户的请求为: http://localhost:8080/wsota/wsota_index.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
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

分享到:
评论

相关推荐

    tomcat处理一个http请求的详细过程

    tomcat中server配置文件的结构,以及处理一个http请求的全过程

    apache-tomcat-9.0.31-windows-x64.zip

    Tomcat的目录结构: ...当tomcat接收了一个访问jsp的请求时, 将会运行jsp生成的servlet类的service 方法。我们可以直接在jsp页面中编写 java代码处理这些请求。并且返回相应 数据,实现服务端业务。

    tomcat学习源码

    作为一个开源和小型的轻量级应用服务器,Tomcat 易于使用,便于部署,但Tomcat本身是一个非常复杂的系统,包含了很多功能模块。这些功能模块构成了Tomcat的核心结构。本书从最基本的HTTP请求开始,直至使用JMX技术...

    Web服务器三剑客运维配置实战 Nginx+JVM+Tomcat+HTTP协议.zip

    课程内容包括了Nginx进阶基础,Nginx配置提升,JVM虚拟机尝试,JVM运维实用排障工具,JVM监控工具,Tomcat配置,Tomcat运维与部署等Web服务器的必备运维部署技术。 ===============课程目录=============== (1)\...

    深入剖析TOMCAT中文版

    作为一个开源和小型的轻量级应用服务器,Tomcat易于使用,便于部署,但Tomcat本身是一个非常复杂的系统,包含了很多功能模块。这些功能模块构成了Tomcat的核心结构。本书从最基本的HTTP请求开始,直至使用JMX技术...

    tomcat6、7、8、9, maven3.5

    版本3.2.3是一个安全更新,关闭一个严重的安全漏洞。版本3.2.4是一个小错误修复版本。所有Apache Tomcat 3.2.3之前版本的用户都应该尽快升级。除了修复关键安全相关的错误,Apache Tomcat 3.2.x分支上的开发已停止。...

    Web开发轻平台-Apache Tomcat

    一个现实的网站使用一个Apache作为Web服务器,为网站的静态页面请求提供服务;并使用Tomcat服务器作为一个Servlet/JSP插件,显示网站的动态页面。  采用apache->tomcat这样的结构才具有更特出的优点,主要体现在...

    how-tomcat-works

    第1章 一个简单的Web服务器 3 1.1 The Hypertext Transfer Protocol (HTTP) 3 1.2 HTTP Request 3 1.3 HTTP Response 4 1.4 Socket类 4 1.5 ServerSocket类 5 1.6 应用举例 5 第2章 一个简单的servlet容器 7 2.1 ...

    《深入剖析Tomcat(中文版+英文版)》.rar

    作为一个开源和小型的轻量级应用服务器,Tomcat 易于使用,便于部署,但Tomcat本身是一个非常复杂的系统,包含了很多功能模块。这些功能模块构成了Tomcat的核心结构。《深入剖析Tomcat》从最基本的HTTP请求开始,...

    新JavaWeb中级课程(19.5G)

    011-Tomcat-Tomcat的目录结构.mp4 012-Tomcat-IDEA编辑器集成Tomcat.mp4 013-Servlet-创建Web项目及Servlet的实现.mp4 014-Servlet-服务器的设置及WebServlet注解.mp4 015-Servlet-Servlet的工作流程.mp4 016-...

    tomcat结构分析

    Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选。对于一个初学者来说,可以这样认为,当在一台...

    深入剖析TOMCAT

    作为一个开源的小型的轻量级应用服务器,Tomcat 易于使用,便于部署,但Tomcat 本身是一个非常复杂的系统,包含了很多功能模块。这些功能模块构成了Tomcat 的核心结构。本书从最基本的HTTP请求开始,直至使用JMX技术...

    nginx+tomcat服务器配置

    那么问题就来了,如果多个系统都要单独使用一个二级域名的话,直接修改tomcat的配置会导致端口冲突。 下面我的解决办法是在Internet和tomcat之间加一个nginx反向代理。 (此图片来源于网络,如有侵权,请联系删除! ) ...

    tomcat-sr:Tomcat启动脚本,配置文件,源码剖析

    requestProcess.pdf-Tomcat请求处理流程序列图(2014.10.28-2014.10.29) 架构/-Tomcat服务器的架构结构和设计(2014.10.29-2014.10.29) server.xml-Tomcat容器配置文件(2014.10.29-) config /-Tomcat配置引用...

    Tomcat体系结构与插件配置教程图解

     2.service:它由一个或者多个Connector组成,以及一个Engine,负责处理所有Connector所获得的客户请求。  3.Connector:客户端与程序交互组件,负责接收请求以及向客户端返回响应。  4.Engine:处理连接器接收到...

    Tomcat整体结构简单介绍

    主要介绍了Tomcat整体结构简单介绍,Tomcat的本质是一个Servlet容器。一个Servlet能做的事情是:处理请求资源,并为客户端填充response对象,需要的朋友可以参考下

    Tomcat系统架构与设计模式,第1部分:工作原理

    本文是第1部分,将主要从Tomcat如何分发请求、如何处理多用户同时请求,还有它的多级容器是如何协调工作的角度来分析Tomcat的工作原理,这也是一个Web服务器首要解决的关键问题。本文以Tomcat5为基础,也兼顾最新的...

    Web服务器三剑客运维配置实战 Nginx+JVM+Tomcat+HTTP协议 视频教程+笔记+课件+资料

    课程内容包括了Nginx进阶基础,Nginx配置提升,JVM虚拟机尝试,JVM运维实用排障工具,JVM监控工具,Tomcat配置,Tomcat运维与部署等Web服务器的必备运维部署技术。 (1)\笔记+课件+资料;目录中文件数:0个 (2)\...

    初识SpringMVC以及springmvc基本应用入门案例彩色PPT版本.pptx

    请求响应模式演进过程 SpringMVC概念 2、入门案例 使用Servlet技术开发web程序流程 创建web工程(Maven结构) 设置tomcat服务器,加载web工程(tomcat插件) 导入坐标(Servlet) 定义处理请求的功能类...

Global site tag (gtag.js) - Google Analytics