Java 中的 Servlet 生命週期:方法、架構、比較和設置

已發表: 2021-03-03

目錄

介紹

Servlet 產生的方法不僅基於組件且獨立於平台,而且非常支持構建基於 Web 的應用程序。 Servlet 可以訪問 java API 和 JDBC API 來訪問數據庫。 在 Java Servlet 的情況下,雖然 CGI(Common Gateway Interface)程序的性能沒有限制,但仍然存在一些缺點。

什麼是 Servlet?

Servlet 是一種對創建動態網頁非常有益的技術。 它充當 Web 瀏覽器和 HTTP 客戶端或服務器之間的中間層。 在 servlet 的幫助下,我們首先收集用戶的輸入,然後動態創建網頁。 Servlet 擴展了服務器和主機應用程序的功能。 Servlet 擴展了服務器的功能並響應用戶的任何類型的請求。

資源

CGI 與 Servlet

在 servlet 之前,CGI 被廣泛使用。 CGI 是一種將從用戶收到的請求傳遞給應用程序的方法。 儘管 CGI 是 Web 服務器的一種方式,但它也從瀏覽器(客戶端)獲取響應。 當用戶向瀏覽器請求網頁時,服務器會將其發送回給他們。

當客戶想在網頁上填寫表格並嘗試再次發送時,應用程序會對其進行處理。 服務器將信息傳遞給一個小型 Web 應用程序。 該程序首先處理數據,然後通過確認消息將其發回。

Servlet 生命週期方法簡介

一個servlet的生命週期方法主要有3種,我們可以描述為:

  1. 在裡面()
  2. 服務()
  3. 破壞()

資源

小服務程序架構

  • 首先,它讀取客戶端發送的數據。 然後,它在網頁中插入一個 HTML 表單,然後發送客戶端發送的請求。
  • 之後,servlet 處理數據並連接到數據庫管理系統,通過調用 Web 服務執行 RMI。
  • 處理後,文件可以以文本和 gif 格式發送。
  • 最後,它將 HTTP 發送到客戶端。

資源

現在我們將詳細討論這些方法

1. 初始化()

init() 方法僅在 servlet 實例創建後調用一次。 首先,它初始化 servlet。 Servlet.init() 表示 servlet 實例創建成功。

init() 方法的語法如下:

公共無效初始化(ServletConfig 配置)拋出 ServletException {

//初始化代碼

}

2.服務()

每當 servlet 收到請求時,Web 容器都會調用 service() 方法。

  • 收集請求的數據 b
  • y 客戶端,使用服務請求對象。
  • 為了生成輸出內容,使用了ServletResponse對象。

service() 方法的簽名如下:

公共無效服務(ServletRequest 請求,ServletREsponse 響應)

拋出 ServletEXception , IOException {

//請求處理代碼

}

service() 方法使用 doGet、doPost、doPut、doDelete 和許多其他方法。

3. 銷毀()

用戶在servlet 的生命週期中至少調用一次 destroy() 方法 它用於終止數據庫連接,釋放分配的內存和資源。 它還有助於清理目的,垃圾收集與此相關。

destroy() 方法的簽名是

公共無效銷毀(){

// 結束代碼

}

另請閱讀: Servlet 與 JSP

Servlet 的環境設置

要創建 Servlet 應用程序,首先,我們需要執行一些步驟,例如安裝 Tomcat 服務器,如下所述 -

1.創建目錄結構

資源

首先,我們需要在一個名為 Apache 的目錄中創建上述目錄結構——Tomcat\webapps 目錄。 我們需要將所有 HTML、靜態文件、圖像保存在創建文件夾的 Web 應用程序下。 servlet 必須保存在類文件夾中。 最後,web.xml 文件應該在 WEB-INF 文件夾下。

2. 創建一個 Servlet

我們可以通過三種不同的方式創建 servlet。

  1. 通過實現 Servlet 接口。
  2. 通過擴展 GenericServlet 類。
  3. 有必要擴展 HTTP servlet 類。

如果我們可以擴展httpServlet抽像類,就可以主要形成一個servlet。

3. 編譯 Servlet

為了編譯 servlet,需要一個 JAR 文件——

  1. 通過設置類路徑。
  2. 通過將 jar 粘貼到 JRE/lib/ext 文件夾中。

4. 創建部署描述符

DD 可以定義為基於 Web 的服務器使用的 XML 文件,以便

他們可以輕鬆運行 servlet。 DD 用於幾個重要目的。

  1. 通過將 URL 映射到 Servlet 類。
  2. 通過初始化參數。
  3. 通過定義錯誤頁面。
  4. 按安全角色。
  5. 通過聲明標籤庫。

5.啟動服務器

要啟動 Apache Tomcat 服務器,我們需要雙擊 apache-tomcat/bin 目錄下的 startup.bat 文件,它就會開始工作。

6.第一次啟動Tomcat服務器

首次啟動 Tomcat 服務器,我們需要在環境變量中設置 JAVA_HOME。 下面提到了以下步驟。 右鍵單擊我的電腦,我們需要轉到屬性

資源

  1. 接下來,我們將轉到高級選項卡,我們需要單擊環境變量按鈕

資源

  1. 因此,我們將單擊新建按鈕並在變量名稱文本字段中輸入JAVA_HOME ,在變量值文本字段中輸入 JDK 的路徑。 然後,我們需要通過單擊“確定”來保存它。

資源

7. 運行 Servlet 應用程序

當我們運行 servlet 按鈕時,它看起來像 -

打開瀏覽器後,我們需要輸入http:localhost:8080/First/hello

結帳:印度的 Java 開發人員薪水

Servlet 請求接口

ServletRequest 旨在為客戶端提供有關 servlet 的真實信息

包括內容類型、長度、參數值等等。

方法

1. 獲取屬性(字符串)

如果屬性不存在,則根據請求返回屬性的值

然後返回 NULL。

2.getAttributeNames()

它返回客戶端請求的當前屬性的名稱。

3.getCharacterEncoding()

返回一些字符集。

4. 獲取內容長度()

返回請求的數據實體大小

5. 獲取內容類型()

首先,它請求對象的身份。 如果未找到,則返回 NULL 值。

6.getInputStream()

返回客戶端接收到的二進制數據流,然後返回字符串。

7. 獲取參數(字符串)

返回參數的字符串。

8.getParameterNames()

它返回參數名稱。

9. 獲取參數值(字符串)

它返回參數的值。 它們總是以字符串的形式存在。

10. 獲取協議()

它以 <protocol>/<major version>.<minor version> 的形式返回協議和版本。

11.getReader()

它返回一個緩衝的閱讀器來閱讀請求正文中的文本。

12. 獲取真實路徑(字符串)

避開虛擬路徑,返回真實路徑。

13.getRemoteAddr()

它返回 IP 地址。

14. 獲取遠程主機()

它返回代理的完全結構化的主機名。

15.getScheme()

它返回請求中使用的 URL。

16. 獲取服務器名稱()

它返回服務器的主機名。

17. 獲取服務器端口()

它返回端口號。

18. 設置屬性(字符串,對象)

此方法為任何類型的請求累積一個屬性。

小服務程序響應

ServletResponse 調用一個對象,記錄各種用戶的響應。 Web 容器負責所有這些活動。 創建它的步驟非常重要。 步驟是創建一個對象。

現在讓我們詳細談談下面的ServletConfigServletContext

ServletConfig

1. Web 容器根據初始化參數創建配置對象。

2. 每個 Servlet 必須存在一個 ServletConfig。

方法

1.等於(對象)

檢查當前對像是否與給定對象具有相等的值。

2.GetHashCode()

用作默認哈希函數。

3.GetType()

返回當前實例的類型。

4. MemberwiseClone()

如果我們調用這個對象,就可以創建一個淺拷貝。 它默認引用當前對象

5. ToString()

返回一個字符串,它表示當前對象。

Servlet上下文

讓我們在下面討論 ServletContext:

  1. 讓 Web 應用程序的每個 Servlet 都可以訪問引用對像是非常必要的。
  2. 引用對象實際上是這些的運行時實現。

兩種類型的 servlet 可以定義為:

1. 通用 Servlet

我們將通用 servlet 稱為獨立於協議,並且需要通過覆蓋來調用它。 我們可以通過三種方式調用通用 servlet——

  • HTML 文件

我們可以創建一個看起來像 WebContent/index.html 的非常簡單的 HTML 文件。

  • Java 類文件

可以通過擴展 GenericServlet 類來創建通用 servlet。 如果我們可以創建一個簡單的新類文件,那麼我們可以將其重命名為泛型。 文件路徑如下:/javaResouces/src/default package/generic.java。

  • XML 文件

我們可以在路徑 WebContent/WEB-INF/web.xml 中找到這個文件。 我們可以將 servlet 映射到特定的 URL。

2. HTTP 小服務程序

這種類型的 servlet 只不過是 Servlet 類的擴展。 雖然它依賴於 HTTP,但它設置了一些規則來幫助 Web 瀏覽器和服務器進行通信,並且 HTTP servlet 也可以覆蓋 doGet() 或 doPost() 方法。 此外,它可以覆蓋這兩種方法。

Servlet 的優點

現在讓我們看看 servlet 的一些優點——

  1. 表現非常出色。
  2. Servlet 可以在服務器的地址空間內執行。 因此,我們可以說沒有必要創建一個單獨的地址空間來處理客戶端請求。
  3. 它們獨立於平台,主要基於組件。
  4. Servlet 受到保護,因為安全管理器設置了一些限制來保護資源和數據。
  5. 在工作時,用戶無需擔心釋放內存作為垃圾分配技術。
  6. Servlet 提供完整的功能,因為所有庫都可用。 它可以輕鬆地與小程序和其他機制進行通信。

資源

Servlet 的缺點

servlet 的局限性討論如下:

  1. 一次只能在 JVM 中加載一個 servlet。 因此,我們可以說它與請求的數量有關。
  2. 當有請求時,只能有一個線程。 那裡不應該存在任何進程。
  3. 設計一個 servlet 的成本很高,而且有時還很成問題。
  4. 我們需要在瀏覽器中進行其他設置,例如服務器上的 JRE(Java 運行時環境)來運行 servlet。

另請閱讀: Java 項目理念和主題

從世界頂級大學在線學習軟件課程獲得行政 PG 課程、高級證書課程或碩士課程,以加快您的職業生涯。

結論

在這個數字世界的現代時代,技術和互聯網已成為一切的驅動力。 互聯網是不安的。 每一秒,都在忙於傳輸大量數據。

但是由於數據的大量傳輸,互聯網速度變慢,因為我們也需要速度。 因此,動態站點由軟件開發人員創建。 這些網站每時每刻都在變化和更新。 要進一步了解 Java 和開發中的 Servlet,請查看upGrad 的全棧軟件開發執行 PG 計劃並開始您的旅程。

本文的主要目的是為讀者提供 servlet 的基本概念,以便他們獲得有關 servlet 的基本概念。

踏上夢想的工作

立即申請全棧開發的執行 PG 計劃