《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