本節書摘來自異步社群《servlet、jsp和spring mvc初學指南》一書中的第1章,第1.2節,作者:【加】budi kurniawan(克尼亞萬) , 【美】paul deck著,更多章節内容可以通路雲栖社群“異步社群”公衆号檢視
servlet接口中定義了以下5個方法:
注意,編寫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實作。