1. 程式人生 > >JSP執行原理

JSP執行原理

在一個JSP檔案第一次被請求時,JSP引擎把該JSP檔案轉換成為一個Servlet。而這個引擎本身也是一個Servlet。JSP的執行過程如下所示:

(1)JSP引擎先把該JSP檔案轉換成一個Java原始檔(Servlet),在轉換時如果發現JSP檔案有任何語法錯誤,轉換過程將中斷,並向服務端和客戶端輸出出錯資訊。

(2)如果轉換成功,JSP引擎用javac把該Java原始檔編譯成相應的class檔案。

(3)建立一個該Servlet(JSP頁面的轉換結果)的例項,該Servlet的jspInit()方法被執行,jspInit()方法在Servlet的生命週期中只被執行一次。

(4)jspService()方法被呼叫來處理客戶端的請求。對每一個請求,JSP引擎建立一個新的執行緒來處理該請求。如果有多個客戶端同時請求該JSP檔案,則JSP引擎會建立多個執行緒。每個客戶端請求對應一個執行緒。以多執行緒方式執行可以大大降低對系統的資源需求,提高系統的併發量及響應時間。但不過也應該注意多執行緒的程式設計限制,由於該Servlet始終駐於記憶體,所以響應是非常快的。

(5)如果.jsp檔案被修改了,伺服器將根據設定決定是否對該檔案重新編譯,如果需要重新編譯,則將編譯結果取代記憶體中的Servlet,並繼續上述處理過程。

(6)雖然JSP效率很高,但在第一次呼叫時由於需要轉換和編譯而有一些輕微的延 遲。此外,在任何時候如果由於系統資源不足的原因,JSP引擎將以某種不確定的方式將Servlet從記憶體中移去。當這種情況發生時jspDestroy()方法首先被呼叫。

(7)然後Servlet例項便被標記加入“垃圾收集”處理。可在jspInit()中進行一些初始化工作,如建立與資料庫的連線,或建立網路連線,從配置檔案中取一些引數等,在jspDestory()中釋放相應的資源。