天天看點

Web伺服器、Servlet容器和Servlet

1.什麼是Web伺服器

想要知道什麼是Servlet容器,我們首先要知道什麼是Web伺服器。

Web伺服器、Servlet容器和Servlet

Web伺服器使用HTTP協定來傳輸資料。

最簡單的一種情況是,使用者在浏覽器(用戶端,client)中輸入一個URL(如,www.programcreek.com/static.html),然後就能擷取網頁進行閱覽。是以,伺服器完成的工作就是發送網頁至用戶端。傳輸過程遵循HTTP協定,它指明了請求(request)消息和響應(response)消息的格式。

2.什麼是Servlet容器

在這裡,我們發現,使用者/用戶端隻能向伺服器請求靜态網頁。如果使用者想要根據自己的輸入來讀取網頁,這種方式就不能滿足使用者的要求。Servlet容器的基本思想是在伺服器端使用Java來動态生成網頁。是以,Servlet容器是Web伺服器和servlet進行互動的必不可少的元件。

Web伺服器、Servlet容器和Servlet

Servlet容器就是用來裝Servlet的。

3.什麼是Servlet

Servlet是在javax.serlvet包中定義的一個接口。它聲明了servlet生命周期中必不可少的三個方法-init()、service()和destroy()。每個servlet(無論是在SDK中定義的,或是自定義的)都必須實作這三個方法,而且由伺服器在特定的時刻調用。

1. init()方法在servlet生命周期的初始化階段被調用。它傳遞一個實作了javax.servlet.ServletConfig接口的對象,使得servlet能夠從web application中擷取初始化參數。

2. servlet初始化收,每接收一個請求,就會調用service()方法。每個請求的處理都在獨立的線程中進行。Web伺服器對每個請求都會調用一次service()方法。service()方法判斷請求的類型,并把它轉發給相應的方法進行處理。

3. 當需要銷毀servlet對象時,就要調用destroy()方法。該方法釋放被占用的資源。

和所有的Java程式一樣,servlet運作在JVM中。引入servlet容器是為了處理複雜的HTTP請求。Servlet容器負責servlet的建立、執行和銷毀。

4.Servlet容器和Web伺服器如何處理一個請求

1. Web伺服器接收到HTTP請求

2. Web伺服器将請求轉發給servlet容器

3. 如果容器中不存在所需的servlet,容器就會檢索servlet,并将其加載到容器的位址空間中

4. 容器調用servlet的init()方法對servlet進行初始化(該方法隻會在servlet第一次被載入時調用)

5. 容器調用servlet的service()方法來處理HTTP請求,即,讀取請求中的資料,建立一個響應。servlet會被保留在容器的位址空間中,繼續處理其他的HTTP請求

6. Web伺服器将動态生成的結果傳回到正确的位址。

下圖示出了上述的六個步驟:

Web伺服器、Servlet容器和Servlet

繼續閱讀