servlet 與 tomcat 之間的關係
雖然它的靈活配置和支援技術的互操作性使Apache Tomcat在許多情況下充當Web應用伺服器,但Tomcat主要是Java Servlet容器。
利用Java Servlet和JSP API的實現,Tomcat能夠接收來自客戶端的請求,動態編譯一個容器管理的Java類來處理相關應用程式上下文中指定的請求,並將結果返回給客戶端。這種生成動態內容的方法實現了對請求的極其快速、執行緒化、平臺無關的處理。
此外,由於Java Servlet規範被設計用於與所有其他主要Java Web技術的互操作性,所以託管在Tomcat伺服器上的servlet能夠利用Tomcat提供給它的任何資源。Tomcat的巢狀分層XML配置檔案允許極其細粒度的資源訪問控制,同時保持鬆散耦合、易於部署以及邏輯的、可讀的體系結構描述。
在本文中,我們將瞭解Apache Tomcat如何使用Servlets向客戶機快速交付各種動態內容。
厭倦乏味,容易出錯的部署?Tcat部署包允許您通過單擊將一組servlet和web應用程式部署到多個Tomcat例項。今天試試Tcat!
- Tomcat如何與servlet一起工作
Servlet規範中的關鍵要求之一是,它們只處理整個資料事務處理的某些部分。例如,servlet程式碼本身永遠不會偵聽特定埠上的請求,也不會直接與客戶機通訊,也不負責管理對資源的訪問。相反,這些東西是由Tomcat(servlet容器)管理的。
這允許servlet在多種環境中被重用,或者允許元件彼此非同步開發——聯結器可以被重新分解,從而提高效率,而不需要對servlet程式碼本身進行任何更改,只要不進行重大更改。
作為託管元件,servlet有一個生命週期,該生命週期從管理容器載入servlet類開始,通常是響應請求,當容器通過呼叫“destroy”方法關閉servlet時結束。所有servlet之間的活動被認為是其生命週期的一部分。
在Tomcat上執行的典型servlet的生命週期可能看起來像這樣:
- Tomcat通過一個聯結器接收來自客戶端的請求。
- Tomcat將此請求對映到適當的引擎進行處理。這些引擎包含在其他元素中,例如主機和伺服器,這些元素限制了Tomcat搜尋正確引擎的範圍。
- 一旦請求已對映到適當的servlet,Tomcat將檢查該servlet類是否已載入。如果沒有,Tomcat將servlet編譯成Java位元組碼,Java位元組碼可由JVM執行,並建立servlet的例項。
- Tomcat通過呼叫它的init方法初始化servlet。servlet包括能夠讀取Tomcat配置檔案並相應地進行操作的程式碼,以及宣告可能需要的任何資源,以便Tomcat能夠以有序的、受管理的方式建立它們。
- 初始化servlet之後,Tomcat可以呼叫servlet的服務方法來處理請求,請求將作為響應返回。
- 在servlet的生命週期中,Tomcat和servlet可以通過使用監聽器類進行通訊,監聽器類監視servlet的各種狀態變化。Tomcat可以以各種方式檢索和儲存這些狀態變化,並允許其他servlet訪問它們,從而允許在單個或多個使用者會話的跨度內由給定上下文的各種元件維護和訪問狀態。此功能的一個實際例子是電子商務應用程式,它記住使用者新增到購物車中的內容,並能夠將此資料傳遞到結賬過程。
- Tomcat呼叫servlet的銷燬方法來平滑刪除servlet。這個動作是由正在偵聽的狀態改變觸發的,或者由傳遞給Tomcat的外部命令觸發,以解除部署servlet的上下文或關閉伺服器。
構件組合
使用servlet和它們結合靜態HTML頁面和JSP頁面訪問的資源,它們包含HTML和Java程式碼的混合,並且可以使用本地標記庫或自定義標記呼叫servlet方法,Tomcat能夠向用戶呈現動態、安全、持久的Web應用程式。應用。
例如,使用者可以訪問一個頁面,其中動態使用者介面物件是用Ajax、CSS和HTML5與DOM互動的客戶端處理的,而使用者資訊是通過與servlet方法互動的JSP標籤從資料庫中拉取的。這允許頁面的表示與任何業務邏輯完全分離,從而提高安全性和設計靈活性。