15158846557 在线咨询 在线咨询
15158846557 在线咨询
所在位置: 首页 > 营销资讯 > 网站运营 > tomcat原理?

tomcat原理?

时间:2024-01-24 14:25:01 | 来源:网站运营

时间:2024-01-24 14:25:01 来源:网站运营

tomcat原理?:作为一个web开发者,自打进入这一行,每天接触最多的可能就是服务器了,每天最多的操作可能就是启动服务器,关掉服务器,各种测试操作。

很多时候,对它是又爱又恨,爱的是它确实是我们做web开发必不可少的东西,而且很优秀;恨的是,每天都要经常启动,停止;不厌其烦的操作。

虽然我们每天都在使用Tomcat服务器,大家就是知道这是一个很好用的服务器,但是我猜很多开发者肯能并不一定清楚的它的来历,也未必对它的原理有过研究。

提到Tomcat,大家可能最先想到的就是一只可爱的小猫咪,但是你没有想过,这个为什么一个服务器会和一致可爱的小猫咪联系在一起呢,好像八竿子也打不着的亲戚,所以,今天咱们就来了解下Tomcat的前世今生......







· Tomcat的由来

Tomcat 服务器是一个免费的开放源的Web应用服务器,属于轻量级应用服务器,广泛应用于web开发,深受广大开发者喜爱,是目前比较流行的Web应用服务器。

Tomcat是Apache 软件基金会(ApacheSoftwareFoundation)的一个核心项目,Tomcat最初是由Sun的软件架构师詹姆斯·邓肯·戴维森开发的,并由Sun贡献给Apache软件基金会。由Apache Sun和其他一些公司及个人共同开发而成。由于有了Sun的参与和支持,最新的Servlet和JSP规范总是能在Tomcat中得到体现。

但是人们不禁对这个Tomcat和小猫咪的关系感到好奇,Tomcat的这个单词是“公猫/野猫”的意思,因为它的开发者姆斯·邓肯·戴维森希望用一种能够自己照顾自己的动物代表这个软件,于是命名为tomcat,它的Logo兼吉祥物也被设计成了一只公猫形象。还有就是,具说姆斯·邓肯·戴维森在撸代码的时候,他养的小猫总是在他的键盘上跳来跳去,所有就多种因素在一起,就有了今天的Tomcat.

但其实,在Tomcat里还有另外一些有意思的故事,比如Tomcat中最核心的模块Servlet,在它的作者开发这个模块的时候,就给他起了听上去都很美的名字Catalina,这个单词的意思是“卡特琳娜”,没错,它就是一个连作者自己的都没去过的美丽的小岛,果然得不到的永远在骚动~~~

好了,关于Tomcat的由来的故事基本就这么多吧,感觉还是跟很多软件的故事类似,要么起个地名,要么起个动物名。







· Tomcat的原理

Tomcat 作为一个Http服务器 +Servlet容器,屏蔽了很多应用层协议和网络通信细节,给我们的是标准的Request和 Response对象,当我们在使用SpringMVC之类的框架的时候,从来都不考虑一个请求的具体的实现细节,就是因为 Tomcat已经为我们做好了这些,我们只需要关注每个请求的具体业务逻辑。

说到这些实现细节,可是复杂了,我们先从整体整体架构上来看下Tomcat的总体结构。







从上图中可以看出 Tomcat有很多组件,但是比较核心的是Connector和Container两个组件,这两个组件分别控制着Tomcat于外界的联系,一个控制着Tomcat的生命周期。




· Tomcat的处理流程

说完了Tomcat的核心组件,我们再来看下Tomcat的处理流程,当一个请求过来之后,Tomcat是怎么处理的,我们上面介绍到的这些组件优势怎么发挥作用的,我们先来看一张图。







  1. 用户点击网页内容,请求被发送到本机端口8080,被在那里监听的Coyote HTTP/1.1 Connector获得
  2. Connector把该请求交给它所在的Service的Engine来处理,并等待Engine的响应
  3. Engine获得请求localhost/index.jsp,匹配所有的虚拟主机Host
  4. Engine匹配到名为localhost的Host(即使匹配不到也把请求交给该Host处理,因为该Host被定义为该Engine的默认主机),名为localhost的Host获得请求/index.jsp,匹配它所拥有的所有的Context。Host匹配到路径为/的Context(如果匹配不到就把该请求交给路径名为“ ”的Context去处理)
  5. path=“/”的Context获得请求/index.jsp,在它的mapping table中寻找出对应的Servlet。Context匹配到URL PATTERN为*.jsp的Servlet, 对应于JspServlet类
  6. 构造HttpServletRequest对象和HttpServletResponse对象,作为参数调用JspServlet的doGet()或doPost(),执行业务逻辑、数据存储等程序
  7. Context把执行完之后的HttpServletResponse对象返回给Host
  8. Host把HttpServletResponse对象返回给Engine
  9. Engine把HttpServletResponse对象返回Connector
  10. Connector把HttpServletResponse对象返回给客户Browser
最终将处理后的结果,渲染之后返回给浏览器,这样一个请求就算完成啦!

关键词:原理

74
73
25
news

版权所有© 亿企邦 1997-2025 保留一切法律许可权利。

为了最佳展示效果,本站不支持IE9及以下版本的浏览器,建议您使用谷歌Chrome浏览器。 点击下载Chrome浏览器
关闭