什麼是Servlet容器?

Servlet容器的基本思想是在服務器端使用Java來動態生成網頁。

 

 

在本文中,我寫了一些關於Web服務器、Servlet容器以及它與JVM的關係的基本概念。我想表達的是,Servlet容器也僅僅不過是一個Java程序。html

1. 什麼是Web服務器?

    想要知道什麼是Servlet容器,咱們首先要知道什麼是Web服務器。java

    Web服務器使用HTTP協議來傳輸數據。最簡單的一種狀況是,用戶在瀏覽器(客戶端,client)中輸入一個URL(如,www.programcreek.com/static.html),而後就能獲取網頁進行閱覽。所以,服務器完成的工做就是發送網頁至客戶端。傳輸過程遵循HTTP協議,它指明瞭請求(request)消息和響應(response)消息的格式。web

2. 什麼是Servlet容器?

    在這裏,咱們發現,用戶/客戶端只能向服務器請求靜態網頁。若是用戶想要根據本身的輸入來讀取網頁,這種方式就不能知足用戶的要求。Servlet容器的基本思想是在服務器端使用Java來動態生成網頁。所以,Servlet容器是Web服務器和servlet進行交互的必不可少的組件。apache

    Servlet容器就是用來裝Servlet的。api

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()方法判斷請求的類型,並把它轉發給相應的方法進行處理。java-web

    3. 當須要銷燬servlet對象時,就要調用destroy()方法。該方法釋放被佔用的資源。oracle

    和全部的Java程序同樣,servlet運行在JVM中。引入servlet容器是爲了處理複雜的HTTP請求。Servlet容器負責servlet的建立、執行和銷燬。app

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服務器將動態生成的結果返回到正確的地址。

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

5. JVM扮演的角色

    使用servlet,就要容許JVM爲處理每一個請求分配獨立的Java線程,這也是Servlet容器主要的優點之一。每個servlet都是一個擁有能響應HTTP請求的特定元素的Java類。Servlet容器的主要做用是將請求轉發給相應的servlet進行處理,並在JVM處理完請求後,將動態生成的結果返回至正確的地址。在大多數狀況下,servlet容器運行在獨立的JVM中,但若是容器須要多個JVM,也有相應的解決方案。

相關文章:

1. Servlet重定向至重命名後的文件下載

2. 在Java Servlet中使用Aapache commons FileUpload組件實現文件上傳(包含源碼)

3. 爲何咱們須要諸如Struts 2一類的Java Web框架?

4. 從JAX-WS Web Service中獲取ServletContext

相關文章
相關標籤/搜索