servlet接口定義了以下5個方法。
注意,編寫java方法簽名的規則是:與包含該方法的類型不在同一個包中的類型,要使用全類名。如service方法javax.servlet.servletexception的簽名,由于它與servlet接口處在同一個包中,是以編寫的時候不需要包資訊,用servletexception即可;但是由于java.io.exception類不在同一個包中,是以需要用全類名才行,即java.io. exception。
init、service和destroy方法屬于servlet生命周期方法。servlet容器将根據以下原則調用這三個方法:
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實作。