JSP 結構

JSP 結構

網路伺服器需要一個 JSP 引擎,也就是一個容器來處理 JSP 頁面。容器負責截獲對 JSP 頁面的請求。本教程使用內嵌 JSP 容器的 Apache 來支援 JSP 開發。

JSP 容器與 Web 伺服器協同合作,為JSP的正常執行提供必要的執行環境和其他服務,並且能夠正確識別專屬於 JSP 網頁的特殊元素。

下圖顯示了 JSP 容器和 JSP 檔案在 Web 應用中所處的位置。


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網頁,就好像在處理靜態網頁一樣。

以上提及到的步驟可以用下圖來表示:

一般情況下,JSP 引擎會檢查 JSP 檔案對應的 Servlet 是否已經存在,並且檢查 JSP 檔案的修改日期是否早於 Servlet。如果 JSP 檔案的修改日期早於對應的 Servlet,那麼容器就可以確定 JSP 檔案沒有被修改過並且 Servlet 有效。這使得整個流程與其他指令碼語言(比如 PHP)相比要高效快捷一些。

總的來說,JSP 網頁就是用另一種方式來編寫 Servlet 而不用成為 Java 程式設計高手。除了解釋階段外,JSP 網頁幾乎可以被當成一個普通的 Servlet 來對待。