JSP架構

Web伺服器需要一個JSP引擎,即一個處理JSP頁面的容器(類似於:Tomcat和Jetty)。 JSP容器負責攔截JSP頁面的請求。本教學使用內置JSP容器的Apache Tomcat來支持JSP頁面的開發。

JSP容器與Web伺服器配合使用以提供運行時環境和JSP需要的其他服務。它知道如何解釋作為JSP一部分的特殊元素。

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

JSP處理

以下步驟說明Web伺服器如何使用JSP創建Web頁面 -

  • 與一般的頁面一樣,流覽器向Web伺服器發送HTTP請求。
  • Web伺服器識別HTTP請求是針對JSP頁面,並將其轉發給JSP引擎。這可以通過使用以.jsp(而不是.html結尾)的URL或JSP頁面完成。
  • JSP引擎從磁片加載JSP頁面並將其轉換為servlet內容。這個轉換非常簡單,所有範本文本都轉換為println()語句,並將所有JSP元素轉換為Java代碼。此代碼實現頁面的相應動態行為。
  • JSP引擎將servlet編譯為可執行類,並將原始請求轉發到servlet引擎。
  • Servlet引擎的Web伺服器加載Servlet類並執行它。在執行期間,servlet生成HTML格式的輸出。HTTP回應中的servlet引擎將輸出傳遞給Web伺服器。
  • Web伺服器根據HTTP回應將靜態HTML內容轉發到流覽器。
  • 最後,Web流覽器處理HTTP回應中動態生成的HTML頁面,就像它是靜態頁面一樣。

通常,JSP引擎將檢查JSP檔的servlet是否已存在,並且JSP上的修改日期是否比servlet更舊。 如果JSP早於其生成的servlet,則JSP容器將會認為(假定)JSP尚未更改,生成的servlet仍然與JSP的內容相匹配,從而不必重新生成。這使得該過程比其他腳本語言(如PHP)更加有效,因此更快。

所以在某種程度上,JSP頁面實際上只是另一種編寫servlet的方式。除了編譯階段,JSP頁面的處理方式與一般的servlet完全相同。


上一篇: JSP開發環境 下一篇: JSP生命週期