很多時候,對它是又愛又恨,愛的是它確實(shí)是我們做web開發(fā)必不可少的東西,而且很優(yōu)" />

国产成人精品无码青草_亚洲国产美女精品久久久久∴_欧美人与鲁交大毛片免费_国产果冻豆传媒麻婆精东

15158846557 在線咨詢 在線咨詢
15158846557 在線咨詢
所在位置: 首頁 > 營銷資訊 > 網(wǎng)站運(yùn)營 > tomcat原理?

tomcat原理?

時間:2024-01-24 14:25:01 | 來源:網(wǎng)站運(yùn)營

時間:2024-01-24 14:25:01 來源:網(wǎng)站運(yùn)營

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

但是人們不禁對這個Tomcat和小貓咪的關(guān)系感到好奇,Tomcat的這個單詞是“公貓/野貓”的意思,因?yàn)樗拈_發(fā)者姆斯·鄧肯·戴維森希望用一種能夠自己照顧自己的動物代表這個軟件,于是命名為tomcat,它的Logo兼吉祥物也被設(shè)計(jì)成了一只公貓形象。還有就是,具說姆斯·鄧肯·戴維森在擼代碼的時候,他養(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é),就是因?yàn)?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的生命周期。




· Tomcat的處理流程

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







  1. 用戶點(diǎn)擊網(wǎng)頁內(nèi)容,請求被發(fā)送到本機(jī)端口8080,被在那里監(jiān)聽的Coyote HTTP/1.1 Connector獲得
  2. Connector把該請求交給它所在的Service的Engine來處理,并等待Engine的響應(yīng)
  3. Engine獲得請求localhost/index.jsp,匹配所有的虛擬主機(jī)Host
  4. Engine匹配到名為localhost的Host(即使匹配不到也把請求交給該Host處理,因?yàn)樵揌ost被定義為該Engine的默認(rèn)主機(jī)),名為localhost的Host獲得請求/index.jsp,匹配它所擁有的所有的Context。Host匹配到路徑為/的Context(如果匹配不到就把該請求交給路徑名為“ ”的Context去處理)
  5. path=“/”的Context獲得請求/index.jsp,在它的mapping table中尋找出對應(yīng)的Servlet。Context匹配到URL PATTERN為*.jsp的Servlet, 對應(yīng)于JspServlet類
  6. 構(gòu)造HttpServletRequest對象和HttpServletResponse對象,作為參數(shù)調(diào)用JspServlet的doGet()或doPost(),執(zhí)行業(yè)務(wù)邏輯、數(shù)據(jù)存儲等程序
  7. Context把執(zhí)行完之后的HttpServletResponse對象返回給Host
  8. Host把HttpServletResponse對象返回給Engine
  9. Engine把HttpServletResponse對象返回Connector
  10. Connector把HttpServletResponse對象返回給客戶Browser
最終將處理后的結(jié)果,渲染之后返回給瀏覽器,這樣一個請求就算完成啦!

關(guān)鍵詞:原理

74
73
25
news

版權(quán)所有? 億企邦 1997-2025 保留一切法律許可權(quán)利。

為了最佳展示效果,本站不支持IE9及以下版本的瀏覽器,建議您使用谷歌Chrome瀏覽器。 點(diǎn)擊下載Chrome瀏覽器
關(guān)閉