1. 程式人生 > >Web伺服器、Servlet容器和Servlet

Web伺服器、Servlet容器和Servlet

1.什麼是Web伺服器
想要知道什麼是Servlet容器,我們首先要知道什麼是Web伺服器。
這裡寫圖片描述
Web伺服器使用HTTP協議來傳輸資料。
最簡單的一種情況是,使用者在瀏覽器(客戶端,client)中輸入一個URL(如,www.programcreek.com/static.html),然後就能獲取網頁進行閱覽。因此,伺服器完成的工作就是傳送網頁至客戶端。傳輸過程遵循HTTP協議,它指明瞭請求(request)訊息和響應(response)訊息的格式。
2.什麼是Servlet容器
在這裡,我們發現,使用者/客戶端只能向伺服器請求靜態網頁。如果使用者想要根據自己的輸入來讀取網頁,這種方式就不能滿足使用者的要求。Servlet容器的基本思想是在伺服器端使用Java來動態生成網頁。因此,Servlet容器是Web伺服器和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伺服器將動態生成的結果返回到正確的地址。
下圖標出了上述的六個步驟:
這裡寫圖片描述