溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Tomcat是不是Servlet容器

發(fā)布時(shí)間:2021-09-01 11:48:12 來(lái)源:億速云 閱讀:136 作者:chen 欄目:服務(wù)器

這篇文章主要講解了“Tomcat是不是Servlet容器”,文中的講解內(nèi)容簡(jiǎn)單清晰,易于學(xué)習(xí)與理解,下面請(qǐng)大家跟著小編的思路慢慢深入,一起來(lái)研究和學(xué)習(xí)“Tomcat是不是Servlet容器”吧!

Context

顧名思義,Servlet容器就是用來(lái)裝載存儲(chǔ)Servlet的。

一個(gè)Servlet表示一個(gè)運(yùn)行在服務(wù)端的程序(servlet = server +  applet)。用戶想要使用這種程序,需要向該程序發(fā)送請(qǐng)求以及獲取該程序的響應(yīng),也就是Servlet規(guī)范中的ServletRequest、ServletResponse。

所以Servlet其實(shí)就是Java中用來(lái)處理請(qǐng)求的一種規(guī)范,所以我們的項(xiàng)目中通常都會(huì)有一個(gè)或多個(gè)Servlet,由它來(lái)負(fù)責(zé)接收請(qǐng)求,或者將請(qǐng)求轉(zhuǎn)交給其他業(yè)務(wù)邏輯。

所以我們的Spring MVC、Spring Boot都存在一個(gè)DispatcherServlet(類似功能的一個(gè)Servlet,負(fù)責(zé)接收請(qǐng)求)。

所以,通常Servlet是屬于一個(gè)應(yīng)用程序(項(xiàng)目)的,換句話說(shuō),我們的一個(gè)應(yīng)用包含多個(gè)Servlet,所以這是第二層Servlet容器--應(yīng)用,也就是Tomcat中的Context(應(yīng)用上下文)。那么第一層Servlet容器呢?

Wrapper

Wrapper就是第一層Servlet容器,Wrapper表示Servlet的包裝者,所以它是最接近Servlet的,那么為什么需要Wrapper呢?

我們通常認(rèn)為Wrapper是這樣的:

一個(gè)Wrapper對(duì)應(yīng)一個(gè)Servlet,這么來(lái)想的話,確實(shí)不需要Wrapper,但是我們還要考慮一些其他的情況:

  • 比如Filter,一個(gè)Filter是可以對(duì)應(yīng)一個(gè)Servlet的。

  • 比如ServletPool,通常的Servlet是所有請(qǐng)求線程公用的,但是在Servlet中支持每一個(gè)請(qǐng)求線程單獨(dú)使用獨(dú)立的Servlet實(shí)例。

所以在Wrapper中,不僅僅只包括一個(gè)Servlet,還包括過濾器和Servlet池,所以Wrapper是第一層Servlet容器。

Host

在我們現(xiàn)實(shí)生活中,一個(gè)應(yīng)用都是部署在一個(gè)主機(jī)上的,所以,一個(gè)主機(jī)可以包含多個(gè)應(yīng)用,一個(gè)應(yīng)用包含多個(gè)Servlet,所以,Host是第三層容器。

在Tomcat中,Host表示虛擬主機(jī),Tomcat在處理請(qǐng)求時(shí),可以根據(jù)請(qǐng)求的域名進(jìn)入到相應(yīng)的Host中進(jìn)行處理。

Engine

Host管理Context,Context管理Wrapper,Wrapper管理Servlet,而Engine就是用來(lái)管理Host的。所以Engine是第四層容器。

最后

肯定有人有疑問,那么Engine之上不需要容器了嗎?不需要了?舉個(gè)例子:

我們的錢(Servlet)要放在錢包(Wrapper)里,錢包要放在書包(Context)里,書包要放在行李箱(Host)里,行李箱要放在飛機(jī)(Engine)上。

所以,如果你問我“Engine放哪?”就相當(dāng)于問我“飛機(jī)放哪?”

答案是不再需要更高層次的容器了,因?yàn)闆]有必要了。

總結(jié)

在Tomcat中,容器分為:

  1. Wrapper

  2. Context

  3. Host

  4. Engine

感謝各位的閱讀,以上就是“Tomcat是不是Servlet容器”的內(nèi)容了,經(jīng)過本文的學(xué)習(xí)后,相信大家對(duì)Tomcat是不是Servlet容器這一問題有了更深刻的體會(huì),具體使用情況還需要大家實(shí)踐驗(yàn)證。這里是億速云,小編將為大家推送更多相關(guān)知識(shí)點(diǎn)的文章,歡迎關(guān)注!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI