servlet生命週期

所謂生命週期,指的是servlet容器如何創建servlet實例、分配其資源、調用其方法、並銷燬其實例的整個過程。

階段一: 實例化(就是創建servlet對象,調用構造器)

在如下兩種情況下會進行對象實例化。

第一種情況:當請求到達容器時,容器查找該servlet對象是否存在,如果不存在,纔會創建實例。

第二種情況:容器在啓動時,或者新部署了某個應用時,會檢查web.xml當中,servlet是否有 load-on-starup配置。如果有,則會創建該servlet實例。load-on-starup參數值越小,優先級越高(最小值爲0,優先級最高)。

 

階段二: 初始化

爲servlet分配資源,調用init(ServletConfig config);方法config對象可以用來訪問servlet的初始化參數。初始化參數是使用init-param配置的參數。init可以override。

 

階段三: 就緒/調用

有請求到達容器,容器調用servlet對象的service()方法。

HttpServlet的service()方法,會依據請求方式來調用doGet()或者doPost()方法。但是,這兩個do方法默認情況下,會拋出異常,需要子類去override。

 

階段四: 銷燬

容器依據自身的算法,將不再需要的servlet對象刪除掉。

在刪除之前,會調用servlet對象的destroy()方法。

destroy()方法用於釋放資源。

在servlet的整個生命週期當中,init,destroy只會執行一次,而service方法會執行多次。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章