Tomcat架构与原理

Tomcat架构与原理

架构图

1562333-20190905174023376-572039378.png

原理

①、用户点击网页内容,请求被发送到本机端口8080,被在那里监听的Coyote HTTP/1.1 Connector获得。
②、Connector把该请求交给它所在的Service的Engine来处理,并等待Engine的回应。
③、Engine获得请求localhost/test/index.jsp,匹配所有的虚拟主机Host。
④、Engine匹配到名为localhost的Host(即使匹配不到也把请求交给该Host处理,因为该Host被定义为该Engine的默认主机),名为localhost的Host获得请求/test/index.jsp,匹配它所拥有的所有的Context。Host匹配到路径为/test的Context(如果匹配不到就把该请求交给路径名为“ ”的Context去处理)。
⑤、path=“/test”的Context获得请求/index.jsp,在它的mapping table中寻找出对应的Servlet。Context匹配到URL PATTERN为*.jsp的Servlet,对应于JspServlet类。
⑥、构造HttpServletRequest对象和HttpServletResponse对象,作为参数调用JspServlet的doGet()或doPost().执行业务逻辑、数据存储等程序。
⑦、Context把执行完之后的HttpServletResponse对象返回给Host。
⑧、Host把HttpServletResponse对象返回给Engine。
⑨、Engine把HttpServletResponse对象返回Connector。
⑩、Connector把HttpServletResponse对象返回给客户Browser。

我们将 Tomcat 中 Connector、Container 作为一个整体比作一对情侣的话,Connector 主要负责对外交流,可以比作为 Boy,Container 主要处理 Connector 接受的请求,主要是处理内部事务,可以比作为 Girl。那么这个 Service 就是连接这对男女的结婚证了。是 Service 将它们连接在一起,共同组成一个家庭。当然要组成一个家庭还要很多其它的元素。

说白了,Service 只是在 Connector 和 Container 外面多包一层,把它们组装在一起,向外面提供服务,一个 Service 可以设置多个 Connector,但是只能有一个 Container 容器。

转载于:https://www.cnblogs.com/Smbands/p/11468600.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/409909.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

c语言转换为python语言_python和c语言

广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! c语言是编译型语言,经过编译后,生成机器码,然后再运行,执行速…

COJ1196(Staginner 去爬山)

题目大意:给定一个n*m的只含0和1的矩阵,从矩阵的最后一行中的某个1出发,每步只能走到相邻的且是1的格子中,求能达到的最大高度(最小行数)。 这题直接DFS即可,复杂度为O(N*M)。 View Code 1 #in…

python网站模板下载_Python画图模板大全:从此画图不用愁

1、matplotlib具体参数介绍: 在介绍Python画图模板之前,先买个和大家卖个官司,首先介绍一下Python画图常用库matplotlib的参数,如果只介绍模板,如果你想改一些参数,首先要知道各个参数的含义,那…

二进制安装mysql-5.7.26

一、上传二进制 mysql-5.7.26-linux-glibc2.12-x86_64.tar.gz包 #/data 是数据盘 自己根据情况定 [rootVM_0_10_centos data]# pwd/datatar xf mysql-5.7.26-linux-glibc2.12-x86_64.tar.gzmv mysql-5.7.26-linux-glibc2.12-x86_64 mysql #做软连接 ln -s /data/mysql /usr/lo…

python给矩阵赋值_解决Python二维数组赋值问题

解决Python二维数组赋值问题 当我们采用s[[0]*3]*2初始化一个数组,然后对s[0][0]进行赋值,改变的是第一列所有的值。因为用s [[0]*3]*2 初始化数组,他表示的是指向这个列表的引用,所以当你修改一个值的时候,整个列表都…

python自增_python mysql自增字段AUTO_INCREMENT值的修改方式

在之前得文章中我们说过,如果使用delete对数据库中得表进行删除,那么只是把记录删除掉,并且id的值还会保持上次的状态。 即删除之前如果有四条数据,删除之后,再添加新的数据,id怎会从5开始。 但是我们显示想…

springboot security 权限不足_springBoot整合springSecurity(零一)

整体结构》》》1,springboot2.0整合springSecurity5.1.12,mysql--->>InnoDB3,持久层我用的是用MybatiysPlus(这里就不写关于这个的了,基本是查)4,web服务不是jar服务5,数据库表》账户表/角色表/权限表/账户角色关…

zabbix基础之环境搭建

zabbix入门 环境部署 安装mysql #安装MySQL,官方的MySQL的repo源地址:http://repo.mysql.com/ #选择指定的MySQL版本,我这里选mysql5.7的版本,复制对应版本的链接地址。 wget http://repo.mysql.com/mysql57-community-release-el7-10.noarch…

新版个人所得税计算python_最新个税计算 / 个税计算器 小程序 wepy 开发

根据最新税改后计算个人所得税的计算器。 如有其它疑惑,也欢迎提出任何修改意见。可以在主题下留言或者在小程序中点击联系在线客服或者加入qq群:869113926 1、扫一扫2、效果图这次开发遇到几个问题因此记录下来。 (1)、在开发微信小程序组件框架时&…

Google Analytics 搜索引擎来源

转载于:https://www.cnblogs.com/dabaopku/archive/2012/05/08/2490164.html

python 图片 变清晰_python实现图片变亮或者变暗的方法

python实现图片变亮或者变暗的方法 这篇文章主要介绍了python实现图片变亮或者变暗的方法,涉及Python中Image模块操作图片的相关技巧,分享给大家供大家参考。具体实现方法如下: import Image # open an image file (.jpg or.png) you have in the working folder im…

mysql存储过程中怎么睡几秒_MySql的逻辑架构

Mysql在互联网企业中应用非常广泛,互联网企业的特点访问量非常大,怎么样优化mysql就成了摆在我们面前的一道难题。我们从mysql的逻辑架构说起:最上面一层是客户端的连接服务,主要完成客户端的连接处理,授权认证。在该层…

createprocess失败代码2_DevOPS | 基于sonarqube、jenkins和gitlab的持续集成代码检查

在持续集成过程中,针对代码的静态检查一般有两个时间点:一是提交代码的时候、二是提交merge request的时候,如果代码检查不通过,则可以直接拒绝此次代码提交或者合并。下面我们介绍下在常见的devops工具链sonarqube、jenkins和git…

保存到本地_手把手教你将微信表情包保存到本地

筒子们晚上好!微信不像QQ那样可以把微信包表情直接保存到本地,所以今天就来介绍两个把微信表情包保存到本地的方法!(两种方法均需要用到电脑)方法一:使用微信公众号(不建议)工具:手机,电脑,微信…

redis集群 + 哨兵 + zookeeper_技术干货 | Redis的哨兵和集群

Redis全称REmote DIctionary Server,是一个开源的使用ANSI C语言编写、遵守BSD协议、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。它通常被称为数据结构服务器,因为值(value)可以是字符串(String), 哈希(…

foxitreadersdk 打开远程文件_一种最不为人知最简单最方便的用电脑操作手机上的文件...

(声明:此功能,只适用于安桌系统的手机)由于最近一年手机上的文件经常隔三差五地提示空间已满,我不得不经常痛心删除一些文件,或者将手机上的文件,移到电脑端。如果想通过QQ或者微信发送单个单个文件,总是不…

python dict遍历_Python 容器(二):字典(Dict)

Python 容器(二):字典(Dict)一、字典1、定义:Python的字典数据类型是基于hash散列算法实现的,采用键值对(key:value)的形式,根据key的值计算value的地址,具有非常快的查取和插入速度。2、特点:1&#xff09…

奥特曼传奇英雄存档丢了怎么找回_热血传奇:道士最帅武器—玄天

点击“传奇私服玩家群”加个关注☀ 欢迎传奇老司机!在这里,分享最新传奇资讯,回忆当年的传奇年代。分享最热传奇手游,端游,找回昔日组队的热血时光。记得加个关注不迷路~☀ 微信公众号:diyisf777热血传奇中…

.Net Core下基于Emit的打造AOP

之前的基于DispatchProxy的AOP组件,实现了属性注入,但是这个依旧有很多限制 比如不支持构造器注入,继承DispatchProxy的子类必须是公开类 个人有点代码洁癖,不喜欢这种不能控制的方式,就学了几天Emit,参考了…

google 确定某点海拔高_“湘能楚天”牌变电站的威宁之旅(一)|高海拔下如何实现与茫茫雪原环境的共生?...

“湘能楚天”牌变电站的威宁之旅——序从湘能楚天办公楼三楼坐电梯,出门左转上京珠高速再转杭瑞高速,根据百度地图的提醒,行车13小时40分,将抵达贵州威宁黑土河,全程1197公里,再前行就到了迤那。黑土河&…