Servlet的生命週期包括即Servlet從創建到銷燬的這一個過程,可以將Servlet的生命週期分爲初始化階段、服務階段、銷燬階段這三個階段。下面通過一張圖來描述Servlet的生命週期,如圖所示:
Servlet生命週期
通過對圖ervlet生命週期的理解,下面對Servlet的生命週期的三個階段進行詳細介紹:
初始化階段
服務器會在客戶端第一次訪問Servlet,或服務器啓動的時候爲該Servlet創建實例。要想在服務器啓動的時候就爲Servlet創建實例,需要在web.xml中進行配置。當服務器爲Servlet創建實例後,會在第一時間調用init()方法,完成Servlet的初始化操作。注意這個init()方法在Servlet的一生中,只會被服務器調用一次。
服務階段
當服務器接收到請求時,會去調用Servlet的service()方法來處理請求,而且每次請求的時候,服務器都會調用service()方法,並且創建新的ServletRequest和ServletResponse對象,所以該方法在Servlet的一生中會被調用多次。
銷燬階段
當服務器關閉或者當前web應用被移出服務器時,Servlet會被銷燬,在銷燬之前,服務器會調用destroy()方法,可以把Servlet的“臨終遺言“放在該方法中,例如把對某些資源的釋放等代碼放在destroy()方法中。
Servlet何時被創建:
1,默認情況下,當WEB客戶第一次請求訪問某個Servlet的時候,WEB容器將創建這個Servlet的實例。
2,當web.xml文件中如果<servlet>元素中指定了<load-on-startup>子元素時,Servlet容器在啓動web服務器時,將按照順序創建並初始化Servlet對象。
注意:在web.xml文件中,某些Servlet只有<serlvet>元素,沒有<servlet-mapping>元素,這樣我們無法通過url的方式訪問這些Servlet,這種Servlet通常會在<servlet>元素中配置一個<load-on-startup>子元素,讓容器在啓動的時候自動加載這些Servlet並調用init()方法,完成一些全局性的初始化工作。
Web應用何時被啓動:
1,當Servlet容器啓動的時候,所有的Web應用都會被啓動
2,控制器啓動web應用
原文地址: http://blog.csdn.net/bemavery/article/details/45343589