JSP - 架構



Web 伺服器需要一個 JSP 引擎,即一個容器來處理 JSP 頁面。JSP 容器負責攔截對 JSP 頁面的請求。本教程使用 Apache,它內建了 JSP 容器來支援 JSP 頁面的開發。

JSP 容器與 Web 伺服器協同工作,為 JSP 提供執行時環境和其他服務。它知道如何理解 JSP 中的特殊元素。

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

JSP Architecture

JSP 處理過程

以下步驟說明了 Web 伺服器如何使用 JSP 建立網頁:

  • 與普通頁面一樣,您的瀏覽器向 Web 伺服器傳送 HTTP 請求。

  • Web 伺服器識別出 HTTP 請求是針對 JSP 頁面的,並將其轉發到 JSP 引擎。這是透過使用 URL 或以.jsp結尾的 JSP 頁面而不是.html來完成的。

  • JSP 引擎從磁碟載入 JSP 頁面並將其轉換為 Servlet 內容。這種轉換非常簡單,其中所有模板文字都轉換為 println( ) 語句,所有 JSP 元素都轉換為 Java 程式碼。此程式碼實現了頁面的相應動態行為。

  • JSP 引擎將 Servlet 編譯成可執行類,並將原始請求轉發到 Servlet 引擎。

  • Web 伺服器的一部分稱為 Servlet 引擎載入 Servlet 類並執行它。在執行過程中,Servlet 生成 HTML 格式的輸出。該輸出由 Servlet 引擎在 HTTP 響應中進一步傳遞給 Web 伺服器。

  • Web 伺服器以靜態 HTML 內容的形式將 HTTP 響應轉發到您的瀏覽器。

  • 最後,Web 瀏覽器處理 HTTP 響應中的動態生成的 HTML 頁面,就像處理靜態頁面一樣。

所有上述步驟都可以在下圖中看到:

JSP Processing

通常,JSP 引擎會檢查 JSP 檔案的 Servlet 是否已存在,以及 JSP 的修改日期是否早於 Servlet。如果 JSP 比其生成的 Servlet 舊,則 JSP 容器假定 JSP 未更改,並且生成的 Servlet 仍然與 JSP 的內容匹配。這使得該過程比其他指令碼語言(如 PHP)更有效,因此速度更快。

因此,從某種意義上說,JSP 頁面實際上只是另一種編寫 Servlet 的方式,而無需成為 Java 程式設計高手。除了轉換階段外,JSP 頁面的處理方式與普通 Servlet 完全相同。

廣告