1. 程式人生 > >《深入分析JavaWeb技術內幕》之 11-Tomcat系統架構與設計模式

《深入分析JavaWeb技術內幕》之 11-Tomcat系統架構與設計模式

1、 分發請求

2 、同時請求

3、 多級容器

4、 設計模式

Tomcat的組織結構

https://www.cnblogs.com/zhouyuqin/p/5143121.html

 

Tomcat Server處理一個HTTP請求的過程

1、使用者點選網頁內容,請求被髮送到本機埠8080,被在那裡監聽的Coyote HTTP/1.1 Connector獲得。 

2、Connector把該請求交給它所在的Service的Engine來處理,並等待Engine的迴應。 

3、Engine獲得請求localhost/test/index.jsp,匹配所有的虛擬主機Host。 

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

5、path=“/test”的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。

 

 

 

 

 

命令模式的優點

https://www.cnblogs.com/java-my-life/archive/2012/06/01/2526972.html

  ●  更鬆散的耦合

  命令模式使得發起命令的物件——客戶端,和具體實現命令的物件——接收者物件完全解耦,也就是說發起命令的物件完全不知道具體實現物件是誰,也不知道如何實現。

  ●  更動態的控制

  命令模式把請求封裝起來,可以動態地對它進行引數化、佇列化和日誌化等操作,從而使得系統更靈活。

  ●  很自然的複合命令

  命令模式中的命令物件能夠很容易地組合成複合命令,也就是巨集命令,從而使系統操作更簡單,功能更強大。

  ●  更好的擴充套件性

  由於發起命令的物件和具體的實現完全解耦,因此擴充套件新的命令就很容易,只需要實現新的命令物件,然後在裝配的時候,把具體的實現物件設定到命令物件中,然後就可以使用這個命令物件,已有的實現完全不用變化。