JVAWEB學習(3) — Serlvet的生命週期
阿新 • • 發佈:2018-11-24
Servlet的生命週期
什麼是Servlet的生命週期
Servlet容器如何建立Servlet物件,如何對該物件進行初始化處理,如何呼叫該物件的方法拉處理請求,以及如何銷燬該物件的整個過程。
Servlet的宣告週期分成哪幾個階段
1. 例項化
-
什麼是例項化
容器呼叫Servlet的構造器,建立Servlet物件。
-
什麼時候例項化
-
容器收到請求之後,才建立相應的例項
-
容器啟動之後,立即建立相應的例項(需要額外的配置)
-
-
對於某個Servlet,容器只會建立一個例項
2. 初始化
-
什麼是初始化
容器呼叫servlet物件的init方法
該方法只會執行一次
-
GenericServlet已經提供了init方法的實現
會將容器傳遞過來的ServletConfig物件儲存下來,並且提供了一個方法(getServletConfig)來獲得該物件
如果要實現自己的初始化處理邏輯,只需要override GenericServlet的Init方法。
-
初始化引數
-
配置初始化引數
<!-- 配置初始化引數 --> <init-param> <param-name
-
呼叫ServletConfig提供的方法
//讀取初始化引數 String company = config.getInitParameter("conpany"); System.out.println("company:" + company);
-
3. 就緒
-
什麼是就緒
容器呼叫Servlet物件的service方法來處理請求
-
HttpServlet已經提供了service方法的實現
該方法會依據請求型別(get請求/post請求)呼叫對應的doXXX方法(比如,get請求會呼叫doGet方法,post請求會呼叫doPost方法)。doXXX方法只是丟擲了一個異常。
開發人員有兩個選擇
- override HttpServlet的doXXX方法
- override HttpServlet的service方法
4. 銷燬
-
什麼是銷燬
容器在刪除servlet物件之前,會呼叫該物件的destroy方法
該方法只會執行一次
-
GenericServlet已經提供了destroy方法的實現
該方法實際上什麼都沒有做,我們可以override該方法,來實現自己的銷燬處理邏輯
相關的介面與類
Servlet介面
init(ServletConfig config);
service(ServletRequest req, ServletResponse res);
destroy();
GenericServlet抽象類
實現了Servlet介面中的部分方法(init,destroy)。
HttpServlet抽象類
繼承了GenericServlet,實現了service方法