在Sun正式發布JSP(JavaServer Pages)之後,這種新的Web應用開發技術很快引起了人們的關注。JSP為建立高度動態Web應用提供了一個獨特的開發環境。按照 Sun 的說法, JSP 能夠適應市場上包括 Apache WebServer 、 IIS4.0 在內的 85% 的伺服器產品。即使您對 ASP “一往情深”,我們認為,關注 JSP 的發展仍舊很有必要。
㈠ JSP與ASP的簡單比較
JSP與Microsoft的ASP技術非常相似。兩者都提供在HTML代碼中混合某種程式碼、由語言引擎解釋執行程式代碼的能力。在ASP或JSP環境下,HTML代碼主要負責描述資訊的顯示樣式,而程式碼則用來描述處理邏輯。普通的 HTML 頁面只依賴於 Web 服務器,而ASP和JSP頁面需要附加的語言引擎分析和執行程式代碼。程式碼的執行結果被重新嵌入到HTML代碼中,然後一起發送給瀏覽器。ASP和JSP都是面向Web伺服器的技術,用戶端瀏覽器不需要任何附加的軟體支援。
ASP的程式設計語言是VBScript之類的指令碼語言,JSP使用的是Java ,這是兩者最明顯的區別。此外,ASP與JSP還有一個更為本質的區別:兩種語言引擎用完全不同的方式處理頁面中嵌入的程式碼。在ASP下, VBScript代碼被ASP引擎解釋執行;在JSP下,代碼被編譯成 Servlet並由Java虛擬機器執行,這種編譯操作僅在對JSP頁面的第一次請求時發生。
㈡運行環境
Sun公司的JSP首頁在http://www.javasoft.com/products/jsp/index.html ,從這裡還可以下載JSP 規範,這些規範定義了供應商在建立 JSP 引擎時所必須遵從的一些規則。
執行JSP代碼需要在伺服器上安裝JSP引擎。此處我們使用的是Sun的JavaServer Web Development Kit(JSWDK)。為便於學習,這個軟體包提供了大量可供修改的樣本。安裝JSWDK之後,只需執行startserver 命令即可啟動伺服器。在預設配置下伺服器在連接埠8080 監聽,使用 http://localhost:8080 即可開啟預設頁面。
在運行JSP樣本頁面之前,請注意一下安裝JSWDK 的目錄,特別是“ work ”子目錄下的內容。執行樣本頁面時,可以在這裡看到JSP頁面如何被轉換成Java源檔案,然後又被編譯成class檔案(即Servlet )。 JSWDK 軟體包中的樣本頁面分為兩類,它們或者是JSP檔案,或者是包含一個表單的HTML檔案,這些表單均由JSP代碼處理。與ASP一樣, JSP 中的Java 代碼均在伺服器端執行。因此,在瀏覽器中使用“查看源檔案”菜單是無法看到 JSP 原始碼的,只能看到結果 HTML 程式碼。所有樣本的原始碼均通過一個單獨的“ examples ”頁面提供。
㈢ JSP 頁面樣本
下面我們分析一個簡單的 JSP 頁面。您可以在 JSWDK 的 examples 目錄下建立另外一個目錄存放此檔案,檔案名稱字可以任意,但副檔名必須為 .jsp 。從下面的代碼清單中可以看到, JSP 頁面除了比普通 HTML 頁面多一些 Java 代碼外,兩者具有基本相同的結構。 Java 代碼是通過 < % 和 %> 符號加入到 HTML 程式碼中間的,它的主要功能是產生並顯示一個從 0 到 9 的字串。在這個字串的前面和後面都是一些通過 HTML 程式碼輸出的文本。
< HTML>
< HEAD>< TITLE>JSP 頁面 < /TITLE>< /HEAD>
< BODY>
< %@ page language="java" %>
< %! String str="0"; %>
< % for (int i=1; i < 10; i++) {
str = str + i;
} %>
JSP 輸出之前。
< P>
< %= str %>
< P>
JSP 輸出之後。
< /BODY>
< /HTML>
這個 JSP 頁面可以分成幾個部分來分析。
首先是 JSP 指令。它描述的是頁面的基本資料,如所使用的語言、是否維持工作階段狀態、是否使用緩衝等。 JSP 指令由 < %@ 開始, %> 結束。在本例中,指令“ < %@ page language="java" %> ”只簡單地定義了本例使用的是 Java 語言(當前,在 JSP 規範中 Java 是唯一被支援的語言)。
接下來的是 JSP 聲明。 JSP 聲明可以看成是定義類這一層次的變數和方法的地方。 JSP 聲明由 < %! 開始, %> 結束。如本例中的“ < %! String str="0"; %> ”定義了一個字串變數。在每一項聲明的後面都必須有一個分號,就象在普通 Java 類中聲明成員變數一樣。
位於 < % 和 %> 之間的代碼塊是描述 JSP 頁面處理邏輯的 Java 代碼,如本例中的 for 迴圈所示。
最後,位於 < %= 和 %> 之間的代碼稱為 JSP 運算式,如本例中的“ < %= str %> ”所示。 JSP 運算式提供了一種將 JSP 產生的數值嵌入 HTML 頁面的簡單方法。