閱讀366 返回首頁    go 阿裏雲 go 技術社區[雲棲]


《Servlet、JSP和Spring MVC初學指南》——1.2 Servlet

本節書摘來自異步社區《Servlet、JSP和Spring MVC初學指南》一書中的第1章,第1.2節,作者:【加】Budi Kurniawan(克尼亞萬) , 【美】Paul Deck著,更多章節內容可以訪問雲棲社區“異步社區”公眾號查看

1.2 Servlet

Servlet接口中定義了以下5個方法:

void init(ServletConfig config) throws ServletException

void service(ServletRequest request, ServletResponse response)
        throws ServletException, java.io.IOException

void destroy()

java.lang.String getServletInfo()

ServletConfig getServletConfig()

注意,編寫Java方法簽名的慣例是,對於與包含該方法的類型不處於同一個包中的類型,要使用全類名。正因為如此,在Service方法javax.servlet.ServletException的簽名中(與Servlet位於同一個包中)是沒有包信息的,而java.io.Exception則是編寫完整的名稱。

init、Service和destroy是生命周期方法。Servlet容器根據以下規則調用這3個方法:

init,當該Servlet第一次被請求時,Servlet容器會調用這個方法。這個方法在後續請求中不會再被調用。我們可以利用這個方法執行相應初始化工作。調用這個方法時,Servlet容器會傳入一個ServletConfig。一般來說,你會將ServletConfig賦給一個類級變量,因此這個對象可以通過Servlet類的其他點來使用。
Service,每當請求Servlet時,Servlet容器就會調用這個方法。編寫代碼時,是假設Servlet要在這裏被請求。第一次請求Servlet時,Servlet容器調用init方法和Service方法。後續的請求將隻調用Service方法。
destroy,當要銷毀Servlet時,Servlet容器就會調用這個方法。當要卸載應用程序,或者當要關閉Servlet容器時,就會發生這種情況。一般會在這個方法中編寫清除代碼。
Servlet中的另外兩個方法是非生命周期方法,即getServletInfo和getServletConfig:

getServletInfo,這個方法會返回Servlet的描述。你可以返回有用或為null的任意字符串。
getServletConfig,這個方法會返回由Servlet容器傳給init方法的ServletConfig。但是,為了讓getServletConfig返回一個非null值,必須將傳給init方法的ServletConfig賦給一個類級變量。ServletConfig將在本章的1.6節中講解。
注意線程安全性。Servlet實例會被一個應用程序中的所有用戶共享,因此不建議使用類級變量,除非它們是隻讀的,或者是java.util.concurrent.atomic包的成員。

下一節“編寫基礎的Servlet應用程序”將介紹如何編寫Servlet實現。

最後更新:2017-05-27 17:01:36

  上一篇:go  《Servlet、JSP和Spring MVC初學指南》——1.3 編寫基礎的Servlet應用程序
  下一篇:go  《Servlet、JSP和Spring MVC初學指南》——第1章 Servlets 1.1Servlet API概覽