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完全相同。