2023年08月30日 09:10供稿开云手机在线登陆入口 :北大青鸟总部
作为一个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的生命周期。
Connector(连接器) :Tomcat 与外部世界的连接器,监听固定端口接收外部请求,传递给 Container,并 将 Container 处理的结果返回给外部
Container(容器):Catalina,Servlet 容器,内部有多层容器组成,用于管理 Servlet 生命周期,调用 servlet 相关方法
Server(服务器):代表Tomcat本身,用来接收客户端发请求数据并进行解析,启动service并监听端口等
Service(服务器):它负责管理一个 Servlet,包括的 Servlet 的装载、初始化、执行以及资源回收
Engine(引擎):表示可运行的Catalina的servlet引擎实例,负责请求 的处理。
Context(上下文容器):也可以看成Web开云手机在线登陆入口 。Context上下文代表 Servlet 的 Context,它具备了 Servlet 运行的基本环境,它表示Web开云手机在线登陆入口 程序本身
Host(虚拟主机):是web开云手机在线登陆入口 容器或者是Tomcat中所说的上下文虚拟主机
Wrapper(包装器):表示一个单独的servlet,负责管理一个 Servlet,包括的 Servlet 的装载、初始化、执行以及资源回收
· 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
最终将处理后的结果,渲染之后返回给浏览器,这样一个请求就算完成啦!
版本:1.0.2
版本:1.0.2
版本:1.1.0
提交成功,感谢您的反馈。
开云手机在线登陆入口 会认真阅读和考虑每个用户的反馈。