1. 程式人生 > >訪問jsp頁面的執行過程

訪問jsp頁面的執行過程

JSP頁面執行過程

JSP 頁面其實是一個Servlet。JSP 頁面是在JSP 容器中執行的。Servlet 容器一般也是JSP 容器。例如, Tomcat 就是一個Servlet/JSP 容器。

第一次請求一個JSP 頁面肘, Servlet/JSP 容器要做兩件事情:

1. 將JSP 頁面轉換成一個J SP 頁面實現類,這是一個實現javax.servlet.p.JspPage介面或其子介面javax.servlet.p.HttpjspPage 的Java 類。JspPage是javax.servlet.Servlet的子介面, 這樣會使每個JSP 頁面都成為一個Servlet . 所生成Servlet 的類名取決於Servlet/JSP 容器。這一點不必操心,因為不需要你直接處理。如果有轉換錯誤,錯誤訊息將會發送到客戶端。

2. 如果轉換成功, Servlet/JSP 容器將會編譯Servlet 類。之後,容器載入和例項化J ava位元組碼,並執行它通常對Servlet 所做的生命週期操作。

對於同一個JSP 頁面的後續請求, Servlet/JSP 容器會檢視這個JSP 頁面自從最後一次轉換以來是否修改過。如果修改過,就會重新轉換、重新編譯,並執行。如果沒有,則執行記憶體中已經存在的JSP Servlet 。這樣,第一次呼叫JSP 頁面的時間總是會比後續請求的更長,因為它需要轉換和編譯。為了解決這個問題,可以採取以下任意一種措施:

配置應用程式,以便在應用程式啟動之時,呼叫所有的JSP 頁面〈實際上是指轉換和編譯) , 而不是在初始請求時才呼叫。

預先編譯JSP頁面,並將它們以Servlet 的方式進行部署。

Servlet與JSP生命週期對比

Servlet的生命週期:

1)構造方法(第1次訪問)

2)init方法(第1次訪問)

3)service方法

4)destroy方法          

Jsp的生命週期

1)翻譯: jsp->java檔案

2)編譯: java檔案->class檔案(servlet程式)

3)構造方法(第1次訪問)

4)init方法(第1次訪問):_jspInit()

5)service方法:_jspService()

6)destroy方法:_jspDestroy()

Jsp的最佳實踐

Servlet技術: 開發動態資源。是一個java類,最擅長寫java程式碼

jsp技術: 開發動態資源。(通過java程式碼)最擅長輸出html程式碼。

各取所長:

在web專案中涉及到邏輯:

1)接收引數      servlet做

2)處理業務邏輯,返回結果    servlet做

3)顯示資料到瀏覽器      jsp做

4)跳轉到其他頁面        servlet做

servlet+jsp模式

servlet:

            1)接收引數

            2)處理業務邏輯

            3)把結果儲存到域物件中

            4)跳轉到jsp頁面

Jsp:

            1)從域物件取出資料

            2)把資料顯示到瀏覽器

servlet的資料    à   jsp頁面

List<Contact>    使用域物件 共享資料