Servlet生命週期


Web容器維護servlet範例的生命週期。下面來看看servlet的生命週期,主要分為以下幾個步驟:

  1. 載入Servlet類,如前面小節中的範例程式碼:MyServlet.java
  2. 建立Servlet範例。
  3. 呼叫Servlet類的init方法。
  4. 呼叫Servlet類的service方法。
  5. 呼叫Servlet類的destroy方法。

模型流程圖如下所示 -

如上圖所示,servlet有三種狀態:新,就緒和結束。 如果servlet範例被建立,則servlet處於新狀態。 呼叫init()方法後,Servlet進入就緒狀態。 在就緒狀態下,servlet執行所有任務。當web容器呼叫destroy()方法時,它轉移到結束狀態。

1.載入Servlet類

類載入器負責載入servlet類。 當Web容器接收到servlet的第一個請求時,將載入servlet類。

2.建立Servlet範例

Web容器在載入servlet類之後建立一個servlet的範例。servlet範例在servlet生命週期中只建立一次。

3.呼叫init方法

Web容器在建立servlet範例後呼叫init方法一次。 init方法用於初始化servlet。 它是javax.servlet.Servlet介面的生命周期方法。init方法的語法如下:

public void init(ServletConfig config) throws ServletException

4.呼叫service方法

每當接收到servlet的請求時,Web容器都會呼叫service方法。如果servlet未初始化,則遵循上述前三個步驟,然後呼叫service方法。 如果servlet被初始化,它呼叫service方法。 請注意,servlet僅初始化一次。 Servlet介面的service方法的語法如下:

public void service(ServletRequest request, ServletResponse response)   
  throws ServletException, IOException

5.呼叫destroy方法

從服務中刪除servlet範例之前,Web容器呼叫destroy方法。它使servlet有機會清理所有資源,例如記憶體,執行緒等。Servlet介面的destroy方法的語法如下:

public void destroy()

架構圖

下圖描述了一個典型的servlet生命週期場景。

  • 首先將來到伺服器的HTTP請求委託給servlet容器。
  • servlet容器在呼叫service()方法之前載入servlet。
  • 然後,servlet容器通過產生多個執行緒來處理多個請求,每個執行緒執行servlet的單個範例的service()方法。