JSP的結構和生命週期
阿新 • • 發佈:2019-02-09
1.JSP的結構
網路伺服器需要一個JSP引擎,也就是一個容器來處理JSP頁面。容器負責截獲對JSP頁面的請求。JSP容器和Web伺服器協同合作,為JSP的正常執行提供必要的執行環境和其它服務,並且能夠正確識別專屬於JSP網頁的特殊元素。
下圖顯示了JSP容器和JSP檔案在Web應用中所處的位置:
2.JSP處理
Web伺服器是通過如下步驟使用JSP來建立網頁的:
- 客戶瀏覽器給伺服器傳送一個HTTP請求;
- Web伺服器識別出這是一個JSP網頁的請求,並且將該請求傳遞給JSP引擎。通過使用URL或.jsp檔案來完成;
- JSP引擎從磁碟中載入JSP檔案,然後將它們轉化為servlet。這種轉化只是簡單地將所有模板文字改用println()語句,並且將所有的JSP元素轉化成Java程式碼;
- JSP引擎將servlet編譯成可執行類,並且將原始請求傳遞給servlet引擎;
- Web伺服器的某元件將會呼叫servlet引擎,然後載入並執行servlet類。在執行的過程中,servlet產生HTML格式的輸出並將其內嵌與HTTP的response上交給Web伺服器;
- Web伺服器以靜態HTML網頁的形式將HTTP的response返回給瀏覽器;
- 最終,Web瀏覽器處理HTTP response中動態產生的HTML網頁,就好像在處理靜態網頁一樣;
- 編譯階段:servlet容器編譯servlet原始檔,生成servlet類;
- 初始化階段:載入與JSP對應的servlet類,建立其例項,並呼叫它的初始化方法;
- 執行階段:呼叫與JSP對應的servlet例項的服務方法;
- 銷燬階段:呼叫與JSP對應的servlet例項的銷燬方法,然後銷燬servlet例項;
- 解析JSP檔案;
- 將JSP檔案轉化為servlet;
- 編譯servlet;
通常,程式只初始化一次。(3)JSP執行這一階段描述了JSP生命週期中一切與請求相關的互動行為,直到被銷燬。當JSP頁面完成初始化後,呼叫jspService()方法執行。(4)JSP清理JSP生命週期的銷燬階段描述了當一個JSP網頁從容器中被移除時所發生的一切。public void jspInit() { //init code }
jspDestroy()方法在JSP中等價於servlet中的銷燬方法。當您需要執行任何清理工作時複寫jspDestroy()方法,比如釋放資料庫連線或者關閉資料夾等等。