1. 程式人生 > >JSP的體系結構

JSP的體系結構

創建 需要 改變 而不是 靜態 技術 修改 mage 編程

以下內容引用自http://wiki.jikexueyuan.com/project/jsp/architecture.html:

Web服務器需要一個JSP引擎,即處理JSP頁面的容器。JSP容器負責為JSP頁面攔截請求。

JSP容器適用於Web服務器,來提供JSP運行時環境和其他服務的需求。它知道如何理解JSP的部分特殊元素。

以下圖表顯示了JSP容器的位置以及在一個Web應用程序中的JSP文件。

技術分享

JSP處理

下面的步驟解釋了web服務器如何使用JSP創建Web頁面:

  • 作為正常的頁面,瀏覽器發送一個HTTP請求到Web服務器。

  • Web服務器承認一個JSP頁面的HTTP請求,並將其轉發給一個JSP引擎。這是通過使用URL或JSP頁面實現的,該JSP頁面是以.jsp結尾而不是以.html結尾的。

  • JSP引擎從磁盤加載JSP頁面並將其轉換為一個Servlet的內容。這種轉換是非常簡單的,所有模板文本轉換為println()語句,所有JSP元素轉換為Java代碼實現頁面的相應的動態行為。

  • JSP引擎編譯Servlet到一個可執行的類中,並將原始請求轉發給一個Servlet引擎。

  • 調用Servlet引擎的Web服務器的一部分加載Servlet類並執行它。執行期間,Servlet產生一個HTML格式的輸出,Servlet引擎將該輸出傳遞到HTTP響應內的Web服務器中。

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

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

上述所有步驟如下圖所示:

技術分享

通常,JSP引擎檢查JSP文件的Servlet是否已存在,JSP的修改日期是否比Servlet的過時。如果JSP的修改日期比其生成的Servlet的修改日期過時,那麽JSP容器假設JSP修改日期沒有改變,且生成的Servlet的修改日期仍然與JSP的內容相匹配。與其他腳本語言(比如 PHP)相比,這個過程更有效率,因此更加快速。

所以在某種程度上來說,一個JSP頁面只是用另一種方式來寫Servlet,而不需要成為一個Java編程奇才。除了翻譯階段,處理JS 頁面完全就像處理一個普通的Servlet一樣。

JSP的體系結構