JSP生命周期
理解JSP底層的關鍵在于理解JSP所遵循的生命周期。
JSP生命周期就是從創建到銷毀的整個過程,類似于servlet生命周期,區別在于JSP生命周期還包括將JSP文件翻譯成servlet。
JSP的生命周期主要包括:編譯、初始化、執行和清理,請看下圖:

編譯的過程主要包括:
如果你希望執行特殊的初始化任務,覆蓋 jspInit() 方法就可以,像下面這樣:
當JSP頁面初始化完成后,容器會調用 _jspService() 方法。_jspService() 方法需要一個 HttpServletRequest 對象和一個 HttpServletResponse 對象作為它的參數,像下面這樣:
JSP銷毀階段會調用 jspDestroy() 方法,等價于 Servlet 中的 destroy() 方法。
如果你希望在最后執行特殊的清理工作,如關閉數據庫連接、關閉打開的文件等,覆蓋 jspDestroy() 方法即可,像下面這樣:
JSP生命周期就是從創建到銷毀的整個過程,類似于servlet生命周期,區別在于JSP生命周期還包括將JSP文件翻譯成servlet。
JSP的生命周期主要包括:編譯、初始化、執行和清理,請看下圖:

JSP編譯
當瀏覽器請求JSP頁面時,JSP引擎首先會檢查是否需要編譯該文件。如果該文件沒有被編譯過,或者上次編譯后被更改過,則重新編譯。編譯的過程主要包括:
- 解析JSP文件;
- 將JSP文件轉為servlet;
- 編譯servlet。
JSP初始化
當容器載入JSP文件后,首先會調用 jspInit() 方法進行初始化工作。如果你希望執行特殊的初始化任務,覆蓋 jspInit() 方法就可以,像下面這樣:
public void jspInit(){ // 初始化代碼 }一般來講JSP只進行一次初始化,servlet也是如此。你可以在 jspInit() 方法中做一些鋪墊性的工作,例如打開數據庫、打開文件或創建查詢表。
JSP執行
這是最重要的一個階段,JSP從這里開始處理用戶請求,直到被銷毀。當JSP頁面初始化完成后,容器會調用 _jspService() 方法。_jspService() 方法需要一個 HttpServletRequest 對象和一個 HttpServletResponse 對象作為它的參數,像下面這樣:
void _jspService( HttpServletRequest request, HttpServletResponse response ){ // 處理用戶請求的代碼 }每次請求,_jspService() 方法都會被調用一次并生成響應的內容(HTML代碼)。
JSP清理
JSP的銷毀階段描述了當一個JSP頁面從容器中被移除時所發生的一切。JSP銷毀階段會調用 jspDestroy() 方法,等價于 Servlet 中的 destroy() 方法。
如果你希望在最后執行特殊的清理工作,如關閉數據庫連接、關閉打開的文件等,覆蓋 jspDestroy() 方法即可,像下面這樣:
public void jspDestroy(){ // 執行清理工作的代碼 }