JSP - 生命週期



本章將討論 JSP 的生命週期。理解 JSP 底層功能的關鍵在於理解它們遵循的簡單生命週期。

JSP 生命週期定義為從建立到銷燬的過程。這類似於 servlet 生命週期,但增加了一個步驟,即需要將 JSP 編譯成 servlet。

JSP 的執行路徑

JSP 的執行路徑如下:

  • 編譯
  • 初始化
  • 執行
  • 清理

JSP 生命週期的四個主要階段與 Servlet 生命週期非常相似。四個階段描述如下:

JSP Life Cycle

JSP 編譯

當瀏覽器請求 JSP 時,JSP 引擎首先檢查是否需要編譯頁面。如果頁面從未被編譯過,或者自上次編譯以來 JSP 已被修改,則 JSP 引擎將編譯頁面。

編譯過程包括三個步驟:

  • 解析 JSP。
  • 將 JSP 轉換成 servlet。
  • 編譯 servlet。

JSP 初始化

當容器載入 JSP 時,它會在服務任何請求之前呼叫jspInit()方法。如果需要執行 JSP 特定的初始化,請覆蓋jspInit()方法:

public void jspInit(){
   // Initialization code...
}

通常,初始化只執行一次,與 servlet 的 init 方法一樣,通常在 jspInit 方法中初始化資料庫連線、開啟檔案和建立查詢表。

JSP 執行

JSP 生命週期中的這一階段表示與請求的所有互動,直到 JSP 被銷燬。

每當瀏覽器請求 JSP 並且頁面已被載入和初始化時,JSP 引擎就會呼叫 JSP 中的_jspService()方法。

_jspService() 方法接受HttpServletRequestHttpServletResponse作為引數,如下所示:

void _jspService(HttpServletRequest request, HttpServletResponse response) {
   // Service handling code...
}

JSP 的 _jspService() 方法是根據請求呼叫的。它負責為該請求生成響應,並且該方法還負責為所有七種 HTTP 方法生成響應,即GET、POST、DELETE等。

JSP 清理

JSP 生命週期中的銷燬階段表示容器正在移除 JSP 的使用。

jspDestroy()方法是 servlet 的 destroy 方法在 JSP 中的等效方法。當需要執行任何清理工作時,例如釋放資料庫連線或關閉開啟的檔案,請覆蓋 jspDestroy。

jspDestroy() 方法具有以下形式:

public void jspDestroy() {
   // Your cleanup code goes here.
}
廣告