1. 程式人生 > >Servlet API中的主要介面與類的作用和生命週期

Servlet API中的主要介面與類的作用和生命週期

Servlet API

顯示了Servlet API中的主要介面與類的類框圖。

(點選檢視大圖)圖4-1  Servlet API的類框圖

Servlet介面

Servlet API的核心是javax.servlet.Servlet介面,所有的Servlet類都必須實現這一介面。在Servlet介面中定義了5個方法,其中有3個方法都由Servlet容器來呼叫,容器會在Servlet的生命週期的不同階段呼叫特定的方法。

init(ServletConfig config)方法:負責初始化Servlet物件。容器在建立好Servlet物件後,就會呼叫該方法。

service(ServletRequest req, ServletResponse res)方法:負責響應客戶的請求,為客戶提供相應服務。當容器接收到客戶端要求訪問特定Servlet物件的請求時,就會呼叫該Servlet物件的service()方法。

destroy()方法:負責釋放Servlet物件佔用的資源。當Servlet物件結束生命週期時,容器會呼叫此方法。

Servlet介面還定義了以下兩個返回Servlet的相關資訊的方法。JavaWeb應用中的程式程式碼可以訪問Servlet的這兩個方法,從而獲得Servlet的配置資訊及其他相關資訊。

getServletConfig():返回一個 ServletConfig 物件,在該物件中包含了 Servlet的初始化引數資訊。

getServletInfo():返回一個字串,在該字串中包含了Servlet的建立者、版本和版權等資訊。

在 Servlet API 中,javax.servlet.GenericServlet 抽象類實現了 Servlet 介面,而javax.servlet.http.HttpServlet 抽象類是 GenericServlet 類的子類。當用戶開發自己的Servlet類時,可以選擇擴充套件GenericServlet類或者HttpServlet類。圖4-2顯示了 Servlet介面及其實現類的類框圖。

(點選檢視大圖)圖4-2  Servlet介面及其實現類的類框圖

Java Servlet API中介面與類的作用與生命週期作了歸納。

這些介面與類的生命週期都由Servlet容器來控制,容器會在特定的時刻建立或銷燬它們的例項。

Servlet API中的主要的介面與類的作用和生命週期

  

(續表)

  

在Servlet介面中定義了3個與生命週期相關的方法。

init():當容器初始化Servlet時呼叫該方法。

service():當客戶端請求訪問Servlet時,容器呼叫該方法。

destroy():當容器銷燬Servlet時呼叫該方法。

例程HelloServlet類為例,在編寫用於響應HTTP請求的Servlet時,通常涉及下列4個步驟。

(1)擴充套件HttpServlet抽象類。

(2)覆蓋HttpServlet的部分方法,如覆蓋doGet()或doPost()方法。

(3)讀取HTTP請求資訊,例如通過HttpServletRequest 物件來讀取請求引數。

在HttpServletRequest中提供了以下用於檢索引數資訊的方法。

getParameter(String name):返回與引數名name對應的引數值。

getParameterNames():返回一個Enumeration物件,它包含了所有的引數名資訊。

getParameterValues():返回一個Enumeration物件,它包含了所有的引數值資訊。

(4)生成 HTTP 響應結果。通過 HttpServletResponse 物件可以生成響應結果,HttpServletResponse 物件有一個getWriter()方法,該方法返回一個PrintWriter物件。使用PrintWriter的print()或println()方法可以向客戶端傳送字串資料流。