亚洲日本欧美日韩高观看,性高湖久久久久久久久,亚洲av成人噜噜无码网站,亚洲欧美日韩国产一区二区动图,亚洲欧美日韩国产精品一区二区


學(xué)AI,好工作 就找北大青鳥
關(guān)注小青 聽課做題,輕松學(xué)習(xí)
周一至周日
4000-9696-28

服務(wù)器為啥是只貓?

來源:北大青鳥總部 2023年08月30日 09:10

摘要: 雖然我們每天都在使用Tomcat服務(wù)器,大家就是知道這是一個很好用的服務(wù)器,但是我猜很多開發(fā)者肯能并不一定清楚的它的來歷,也未必對它的原理有過研究,今天咱們就來了解下Tomcat的前世今生......

作為一個web開發(fā)者,自打進(jìn)入這一行,每天接觸最多的可能就是服務(wù)器了,每天最多的操作可能就是啟動服務(wù)器,關(guān)掉服務(wù)器,各種測試操作。

很多時候,對它是又愛又恨,愛的是它確實(shí)是我們做web開發(fā)必不可少的東西,而且很優(yōu)秀;恨的是,每天都要經(jīng)常啟動,停止;不厭其煩的操作。

雖然我們每天都在使用Tomcat服務(wù)器,大家就是知道這是一個很好用的服務(wù)器,但是我猜很多開發(fā)者肯能并不一定清楚的它的來歷,也未必對它的原理有過研究。

提到Tomcat,大家可能最先想到的就是一只可愛的小貓咪,但是你沒有想過,這個為什么一個服務(wù)器會和一致可愛的小貓咪聯(lián)系在一起呢,好像八竿子也打不著的親戚,所以,今天咱們就來了解下Tomcat的前世今生......



· Tomcat的由來

Tomcat 服務(wù)器是一個免費(fèi)的開放源的Web應(yīng)用服務(wù)器,屬于輕量級應(yīng)用服務(wù)器,廣泛應(yīng)用于web開發(fā),深受廣大開發(fā)者喜愛,是目前比較流行的Web應(yīng)用服務(wù)器。

Tomcat是Apache 軟件基金會(ApacheSoftwareFoundation)的一個核心項目,Tomcat最初是由Sun的軟件架構(gòu)師詹姆斯·鄧肯·戴維森開發(fā)的,并由Sun貢獻(xiàn)給Apache軟件基金會。由Apache Sun和其他一些公司及個人共同開發(fā)而成。由于有了Sun的參與和支持,最新的Servlet和JSP規(guī)范總是能在Tomcat中得到體現(xiàn)。

但是人們不禁對這個Tomcat和小貓咪的關(guān)系感到好奇,Tomcat的這個單詞是“公貓/野貓”的意思,因為它的開發(fā)者姆斯·鄧肯·戴維森希望用一種能夠自己照顧自己的動物代表這個軟件,于是命名為tomcat,它的Logo兼吉祥物也被設(shè)計成了一只公貓形象。還有就是,具說姆斯·鄧肯·戴維森在擼代碼的時候,他養(yǎng)的小貓總是在他的鍵盤上跳來跳去,所有就多種因素在一起,就有了今天的Tomcat.

但其實(shí),在Tomcat里還有另外一些有意思的故事,比如Tomcat中最核心的模塊Servlet,在它的作者開發(fā)這個模塊的時候,就給他起了聽上去都很美的名字Catalina,這個單詞的意思是“卡特琳娜”,沒錯,它就是一個連作者自己的都沒去過的美麗的小島,果然得不到的永遠(yuǎn)在騷動~~~

好了,關(guān)于Tomcat的由來的故事基本就這么多吧,感覺還是跟很多軟件的故事類似,要么起個地名,要么起個動物名。



· Tomcat的原理

Tomcat 作為一個Http服務(wù)器 +Servlet容器,屏蔽了很多應(yīng)用層協(xié)議和網(wǎng)絡(luò)通信細(xì)節(jié),給我們的是標(biāo)準(zhǔn)的Request和 Response對象,當(dāng)我們在使用SpringMVC之類的框架的時候,從來都不考慮一個請求的具體的實(shí)現(xiàn)細(xì)節(jié),就是因為 Tomcat已經(jīng)為我們做好了這些,我們只需要關(guān)注每個請求的具體業(yè)務(wù)邏輯。

說到這些實(shí)現(xiàn)細(xì)節(jié),可是復(fù)雜了,我們先從整體整體架構(gòu)上來看下Tomcat的總體結(jié)構(gòu)。



從上圖中可以看出 Tomcat有很多組件,但是比較核心的是Connector和Container兩個組件,這兩個組件分別控制著Tomcat于外界的聯(lián)系,一個控制著Tomcat的生命周期。

  • Connector(連接器) :Tomcat 與外部世界的連接器,監(jiān)聽固定端口接收外部請求,傳遞給 Container,并 將 Container 處理的結(jié)果返回給外部

  • Container(容器):Catalina,Servlet 容器,內(nèi)部有多層容器組成,用于管理 Servlet 生命周期,調(diào)用 servlet 相關(guān)方法

  • Server(服務(wù)器):代表Tomcat本身,用來接收客戶端發(fā)請求數(shù)據(jù)并進(jìn)行解析,啟動service并監(jiān)聽端口等

  • Service(服務(wù)器):它負(fù)責(zé)管理一個 Servlet,包括的 Servlet 的裝載、初始化、執(zhí)行以及資源回收

  • Engine(引擎):表示可運(yùn)行的Catalina的servlet引擎實(shí)例,負(fù)責(zé)請求 的處理。

  • Context(上下文容器):也可以看成Web應(yīng)用。Context上下文代表 Servlet 的 Context,它具備了 Servlet 運(yùn)行的基本環(huán)境,它表示W(wǎng)eb應(yīng)用程序本身

  • Host(虛擬主機(jī)):是web應(yīng)用容器或者是Tomcat中所說的上下文虛擬主機(jī)

  • Wrapper(包裝器):表示一個單獨(dú)的servlet,負(fù)責(zé)管理一個 Servlet,包括的 Servlet 的裝載、初始化、執(zhí)行以及資源回收


· Tomcat的處理流程

說完了Tomcat的核心組件,我們再來看下Tomcat的處理流程,當(dāng)一個請求過來之后,Tomcat是怎么處理的,我們上面介紹到的這些組件優(yōu)勢怎么發(fā)揮作用的,我們先來看一張圖。



  1. 1、用戶點(diǎn)擊網(wǎng)頁內(nèi)容,請求被發(fā)送到本機(jī)端口8080,被在那里監(jiān)聽的Coyote HTTP/1.1 Connector獲得

  2. 2、Connector把該請求交給它所在的Service的Engine來處理,并等待Engine的響應(yīng)

  3. 3、Engine獲得請求localhost/index.jsp,匹配所有的虛擬主機(jī)Host

  4. 4、Engine匹配到名為localhost的Host(即使匹配不到也把請求交給該Host處理,因為該Host被定義為該Engine的默認(rèn)主機(jī)),名為localhost的Host獲得請求/index.jsp,匹配它所擁有的所有的Context。Host匹配到路徑為/的Context(如果匹配不到就把該請求交給路徑名為“ ”的Context去處理)

  5. 5、path=“/”的Context獲得請求/index.jsp,在它的mapping table中尋找出對應(yīng)的Servlet。Context匹配到URL PATTERN為*.jsp的Servlet, 對應(yīng)于JspServlet類

  6. 6、構(gòu)造HttpServletRequest對象和HttpServletResponse對象,作為參數(shù)調(diào)用JspServlet的doGet()或doPost(),執(zhí)行業(yè)務(wù)邏輯、數(shù)據(jù)存儲等程序

  7. 7、Context把執(zhí)行完之后的HttpServletResponse對象返回給Host

  8. 8、Host把HttpServletResponse對象返回給Engine

  9. 9、Engine把HttpServletResponse對象返回Connector

  10. 10、Connector把HttpServletResponse對象返回給客戶Browser

最終將處理后的結(jié)果,渲染之后返回給瀏覽器,這樣一個請求就算完成啦!


標(biāo)簽: tomcat
報名優(yōu)惠
免費(fèi)試聽
課程資料
官方微信
返回頂部
培訓(xùn)課程 熱門話題 站內(nèi)鏈接