十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

Tomcat详细讲解(巨详细!!!)

Tomcat详细讲解(巨详细!!!) tomcat的工作流程**前言**Tomcat是一个开源的Java Web应用服务器Java Web应用服务器这个概念听起来有点专业但其实用通俗的语言来解释并不难理解。首先我们得知道Web应用是什么。简单来说Web应用就是我们平时在网页上能看到的、能与之交互的那些东西比如网上商城、社交媒体平台等。这些Web应用背后需要有一个“服务员”来为我们提供服务这个“服务员”就是Web应用服务器。而Java Web应用服务器就是专门用Java语言编写的用来运行和提供Java Web应用服务的服务器。它就像是一个“厨房”我们的Java Web应用就像是“菜品”而用户就像是“顾客”。当用户顾客通过浏览器发送请求时Java Web应用服务器厨房就会根据请求去准备相应的“菜品”运行相应的Java Web应用然后返回给用户顾客。这个过程中Java Web应用服务器会处理很多复杂的事情比如解析HTTP请求、处理业务逻辑、访问数据库、生成HTML页面等。而且它还能管理多个用户顾客的请求确保它们都能得到及时、准确的处理。常见的Java Web应用服务器有Tomcat、JBoss、WebLogic等。其中Tomcat是最流行的一个它免费、开源而且性能稳定非常适合用于开发和部署Java Web应用。所以简单来说Java Web应用服务器就是一个专门用来运行和提供Java Web应用服务的“服务员”它能让我们的Web应用在互联网上“开业迎客”。*tomcat的构成1tomcat包括五大容器和一个连接器五大容器是Service、Engine、Host、Context、WrapperConnector。2tomcat的文件目录bin:存放可执行的文件如startup和shutdown。conf:存放配置文件如核心配置文件server.xml和应用默认的部署描述文件web.xml。lib:存放Tomcat运行需要的jar包。logs:存放运行的日志文件。webapps:存放默认的web应用部署目录。work:存放web应用代码生成和编译文件的临时目录。*tomcat是由很多组件构成正是所有的组件组合在一起让tomcat有了各个功能接下来讲解tomcat各个组件的作用由上图我们可以看出tomcat各个组件是一层包着一层所以接下来我们要像剥洋葱一样一层一层地去解析它一第一层—server组件 它在tomcat的最外层所以可以将一个server实例看成一个tomcat 简言**启动一个server实例就相当于启动一个JVM进程因为tomcat或者说server实例就是基本用Java语言写的还要注意每次启动一个server实例这个实例马上就监听着8005端口就是一个接收结束server进程消息的窗口以接收shutdown命令告诉server实例可以结束了这就相当于你高中时中午最后一节课上课铃刚打你就盯着黑板上的闹钟期盼着指针指向下课的地方当你看到指针快指到下课位置时你知道要干饭了好了别回忆了知道你高中也这样嘿嘿言归正传这个地方要记住一个server实例只能对映一个端口如果你启动了两个实例一定要保证这两个实例对应的端口不一样server作用掌控全局管理各个部分之间的工作1.全局管理Server组件是整个Tomcat实例的顶级容器负责管理和协调所有Service组件(由上面的图我们可以看出server位于tomcat的最外围包含着service、connector、engine、host等一系列容器)。它提供了服务器级别的配置包括定义全局服务器配置、管理服务生命周期tomcat从启动到停止等。2.监听关闭命令Server组件会监听某个特定端口默认是8005以接收SHUTDOWN命令来关闭Tomcat服务器。当需要关闭服务器时可以通过向该端口发送SHUTDOWN命令来实现。3.提供监听器机制Server组件提供了监听器机制用于在Tomcat整个生命周期中对不同事件进行处理。这些监听器可以执行诸如初始化APR库、初始化Jasper组件、防止JRE内存泄露等任务。**二、第二层—service组件a作用Service组件在Tomcat中的主要作用是管理一组关联的Connector和Engine组件。它负责接收和处理客户端请求以及将这些请求传递给Engine组件进行进一步的处理。简单来说Service组件是Tomcat中对外提供服务的核心组件。深入讲解 Service主要用于关联一个引擎和与此引擎相关的连接器每个连接器通过一个特定的端口和协议接收请求并将其转发至关联的引擎进行处理。我们再来看看tomcat的工作流程看图中的红色文字这个web服务器就是用来接收请求但是它不能处理请求它要将请求转发给下一个部件这个所谓的下一个部件就是engine这个组件也就是引擎这个web服务器就是连接器而service就是工作在web服务器和engine这个组件连接途径上的所以说“Service主要用于关联一个引擎和与此引擎相关的连接器”b工作流程1.接收请求当客户端向Tomcat服务器发送请求时这些请求首先会被Connector组件很明显这个connector组件包含在上图web服务器中接收。2.封装请求Connector组件将接收到的请求封装成Request和Response对象。3.传递请求封装好的Request对象会被传递给Engine组件进行处理。4.处理请求Engine组件根据请求的Host和Context查找对应的Web应用并调用相应的Servlet来处理请求。5.生成响应处理完请求后Engine组件会生成相应的Response对象并将其返回给Connector组件。6.发送响应Connector组件将Response对象发送给客户端完成整个请求处理流程。三第三层—Engine组件Tomcat中的Engine组件是其核心组件之一负责处理来自客户端的请求并将这些请求分发到对应的虚拟主机Host或Web应用程序Context进行处理。a,作用Engine组件在Tomcat中扮演着全局引擎容器的角色就是扮演一个引擎的角色它负责接收来自Connector的请求并根据请求的URL和虚拟主机名称等信息将请求分发到对应的Host组件进行处理。Engine组件还负责管理和协调其下的Host组件确保它们能够高效地处理请求并返回响应。上面作用的介绍中我们要注意的是“根据请求的URL和虚拟主机名称等信息将请求分发到对应的Host组件进行处理”虚拟主机你在前期的学习中就把它当成Host组件虚拟主机就是host组件host组件就是虚拟主机一个engine里面可以有多个host组件虚拟主机这些组件的名称也各不相同在上面我们介绍到engine是用来接收web应用服务器的请求的这些请求可能会来自不同的IP也就是来自不同的地方engine就是将这些来自不同地方的请求转到对应的host组件虚拟主机处理看下图上图的localhost标识Host虚拟主机是你这个电脑默认的虚拟主机其它两个代表你后来又自己配置了两个虚拟主机。**b,工作流程1. 当客户端发送请求时Tomcat中的Connector组件负责监听指定的端口并接收这些请求。2. Connector组件对收到的请求进行协议解析如HTTP协议解析将请求转换为Tomcat内部的格式。3. 解析后的请求被传递给Engine组件。Engine组件根据请求的主机名等信息将请求路由到对应的Host组件。4. Host组件根据请求的应用上下文路径即URL中的路径部分将请求转发到相应的Context组件。5. Context组件确定要处理请求的Servlet或其他资源并调用相应的Servlet实例来处理请求。6. Servlet处理完请求后生成响应结果。响应经过一系列的处理和转换如编码、压缩等通过Connector组件发送回客户端。简而言之就是客户端发送请求connector接收后把请求变成tomcat内部各个组件能看懂的信息然后将其传给EngineEngine再根据这个信息请求的样子将其传给对应的host,host再根据这个信息请求的样子将其传给对应的contextcontext根据信息让servlet来处理信息然后servlet将处理的结果传给客户端。这就像把一个皮球踢来踢去四第四层—Host组件我觉得目前只用记住第二个作用就行剩下两个有印象就行。就记住它是传递信息的就行。五第五层—Context组件它负责管理和维护Web应用程序的运行环境并提供了一系列重要的功能来支持Web应用的开发和运行a:关于servlet的介绍—Servlet 充当 Web 服务器和应用程序之间的桥梁处理来自客户端如浏览器的请求并生成响应。再来看下图继续说context你把context当成一个web应用就行作用**1.管理Servlet实例Context组件负责管理和维护Servlet实例的生命周期包括Servlet的装载、初始化、执行和资源回收等。2.提供Web应用环境Context组件为Web应用提供了运行所需的环境和资源包括ClassLoader、资源访问对象等。3.处理HTTP请求当Connector组件接收到HTTP请求后会通过匹配请求URI的上下文路径来选择相应的Context来处理该请求。然后Context会根据web.xml文件中定义的servlet映射来选择一个正确的Servlet来处理该请求。**六第六层 — wrapper组件扮演着管理Servlet实例的重要角色Wrapper组件是Tomcat中最底层的容器它直接包装了java.servlet.Servlet实例。每个Wrapper组件都对应一个特定的Servlet并负责该Servlet的加载、初始化、执行以及资源回收等生命周期管理。 功能*1.Servlet实例管理 * Wrapper组件负责创建和管理Servlet实例。当Tomcat启动时或接收到对某个Servlet的请求时Wrapper组件会负责加载和初始化该Servlet。 * 在Servlet的生命周期中Wrapper组件还负责调用Servlet的init()、service()和destroy()等方法以确保Servlet能够正确地启动、处理和终止请求。2.请求转发 * 当Tomcat接收到一个HTTP请求时Connector组件会解析请求并创建Request和Response对象。然后这些对象会被传递给Container容器来处理。 * 在Container容器中请求会按照Engine、Host、Context和Wrapper的层次结构进行传递。最终请求会到达与请求URI匹配的Wrapper组件。 * Wrapper组件会将请求转发给所包装的Servlet实例进行处理并将处理结果返回给客户端。*下面的了解下就行七第七层— Connector组件 Tomcat中的Connector组件是其最核心的两个组件之一主要负责接收客户端连接和客户端请求的处理加工。**a,基本职责 **Connector组件的主要职责是监听指定端口上的客户端请求并将这些请求转发给Tomcat中的其他组件进行处理。同时它还需要将处理后的响应报文(就是处理后的结果)组装并返回给客户端。可以说Connector组件是Tomcat与外部客户端进行通信的桥梁。b,基本组成1.Protocol组件负责处理具体的通信协议如HTTP、AJP等。2.Mapper组件用于将请求URI映射到相应的Servlet或资源上。3.CoyoteAdapter组件作为适配器将请求转发给Tomcat内部的Container容器进行处理。#### Connector组件的工作流程1.监听端口Connector组件会监听指定端口上的客户端请求。2.解析请求报文当接收到请求后Connector组件会解析请求报文生成Request对象。3.转发请求Connector组件会将Request对象转发给Mapper组件进行URI映射然后找到相应的Servlet或资源。4.处理请求通过CoyoteAdapter组件请求被转发给Tomcat内部的Container容器进行处理。Container容器会调用相应的Servlet来处理请求并生成Response对象。5.组装响应报文Connector组件会读取Response对象并将其组装成响应报文返回给客户端。~各位大哥大姐给个赞给个收藏呗~~~
返回列表