1. tomcat是誰?
![](http://img.jbzj.com/file_images/article/201908/2019810165437351.png?2019710165534)
2. tomcat可以做什么?
tomcat是一個web容器,可以將web應(yīng)用部署到tomcat,由它提供web服務(wù),一個web容器中可以部署多個web應(yīng)用,這些web應(yīng)用可以是同一個域名,也可以是多個域名的服務(wù)。
3. tomcat有哪些組件
![](http://img.jbzj.com/file_images/article/201908/2019810165437352.png?2019710165534)
4.怎么快速理解這些組件呢?
我們可以假設(shè)我們來設(shè)計(jì)一個web容器,我們該什么設(shè)計(jì)?
第一代:接收請求,處理請求,返回結(jié)果集中到整個web容器中,如下圖所示:
![](http://img.jbzj.com/file_images/article/201908/2019810165437353.png?2019710165534)
第二代 :連接管理和處理邏輯分開
使用過程中發(fā)現(xiàn),每次都要打開socket的連接,調(diào)用處理邏輯,然后關(guān)閉socket連接比較煩,干脆將socket的連接關(guān)閉交給Connector來處理,請求的業(yè)務(wù)邏輯交給Container來處理好了,就變成這樣了。
![](http://img.jbzj.com/file_images/article/201908/2019810165437354.png?2019710165534)
第三代:支持多種網(wǎng)絡(luò)協(xié)議
最初的目標(biāo)是設(shè)計(jì)一個web服務(wù)器或者容器,那么如果想要支持更多的協(xié)議就需要新建不同的Connector和Container,此時就變成這樣子了,其中service包裝了Connector和Container
![](http://img.jbzj.com/file_images/article/201908/2019810165437355.png?2019710165534)
第四代:支持多個web應(yīng)用
既然是容器,就要支持多個應(yīng)用,每個應(yīng)用是有一個Context,且相互隔離,支持多個Context的架構(gòu)如下:
![](http://img.jbzj.com/file_images/article/201908/2019810165437356.png?2019710165534)
第五代:支持多域名
Context上下文不僅僅需要物理上的隔離,也需要邏輯上的隔離,如app1.example.com訪問context1,app1.test.com訪問context2.
此時的架構(gòu)應(yīng)該是這樣的,host可以支持多個context。
![](http://img.jbzj.com/file_images/article/201908/2019810165437357.png?2019710165534)
5.總結(jié):
- web服務(wù)器的組件由server-->滿足功能
- server+connector+Container-->職責(zé)分離
- server+service+connector+Container-->支持多種協(xié)議
- server+service+connector+Container+context-->支持多個應(yīng)用
- server+service+connector+Container+host+context -->支持多個域名的多個應(yīng)用
其實(shí)就是一個分工組件細(xì)化的過程,類似于社會分工的細(xì)化,注意,Container在tomcat里也稱作engine。
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。