1. 程式人生 > >JVAWEB學習(3) — Serlvet的生命週期

JVAWEB學習(3) — Serlvet的生命週期

Servlet的生命週期

什麼是Servlet的生命週期

Servlet容器如何建立Servlet物件,如何對該物件進行初始化處理,如何呼叫該物件的方法拉處理請求,以及如何銷燬該物件的整個過程。

在這裡插入圖片描述

Servlet的宣告週期分成哪幾個階段

1. 例項化

  • 什麼是例項化

    容器呼叫Servlet的構造器,建立Servlet物件。

  • 什麼時候例項化

    1. 容器收到請求之後,才建立相應的例項

    2. 容器啟動之後,立即建立相應的例項(需要額外的配置)

  • 對於某個Servlet,容器只會建立一個例項

2. 初始化

  • 什麼是初始化

    容器呼叫servlet物件的init方法

    該方法只會執行一次

  • GenericServlet已經提供了init方法的實現

    會將容器傳遞過來的ServletConfig物件儲存下來,並且提供了一個方法(getServletConfig)來獲得該物件

    如果要實現自己的初始化處理邏輯,只需要override GenericServlet的Init方法。

  • 初始化引數

    1. 配置初始化引數

      <!-- 
        	配置初始化引數
      -->
      <init-param>
      	<param-name
      >
      company</param-name> <param-value>碼多多</param-value> </init-param>
    2. 呼叫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方法