在 sun 正式發(fā)布 jsp(javaserver pages) 之后,這種新的 web 應(yīng)用開(kāi)發(fā)技術(shù)很快引起了人們的關(guān)注。 jsp 為創(chuàng)建高度動(dòng)態(tài)的 web 應(yīng)用提供了一個(gè)獨(dú)特的開(kāi)發(fā)環(huán)境。按照 sun 的說(shuō)法, jsp 能夠適應(yīng)市場(chǎng)上包括 apache webserver 、 iis4.0 在內(nèi)的 85% 的服務(wù)器產(chǎn)品。即使您對(duì) asp “一往情深”,我們認(rèn)為,關(guān)注 jsp 的發(fā)展仍舊很有必要。
㈠ jsp 與 asp 的簡(jiǎn)單比較
jsp 與 microsoft 的 asp 技術(shù)非常相似。兩者都提供在 html 代碼中混合某種程序代碼、由語(yǔ)言引擎解釋執(zhí)行程序代碼的能力。在 asp 或 jsp 環(huán)境下, html 代碼主要負(fù)責(zé)描述信息的顯示樣式,而程序代碼則用來(lái)描述處理邏輯。普通的 html 頁(yè)面只依賴于 web 服務(wù)器,而 asp 和 jsp 頁(yè)面需要附加的語(yǔ)言引擎分析和執(zhí)行程序代碼。程序代碼的執(zhí)行結(jié)果被重新嵌入到 html 代碼中,然后一起發(fā)送給瀏覽器。 asp 和 jsp 都是面向 web 服務(wù)器的技術(shù),客戶端瀏覽器不需要任何附加的軟件支持。
asp 的編程語(yǔ)言是 vbscript 之類的腳本語(yǔ)言, jsp 使用的是 java ,這是兩者最明顯的區(qū)別。此外, asp 與 jsp 還有一個(gè)更為本質(zhì)的區(qū)別:兩種語(yǔ)言引擎用完全不同的方式處理頁(yè)面中嵌入的程序代碼。在 asp 下, vbscript 代碼被 asp 引擎解釋執(zhí)行;在 jsp 下,代碼被編譯成 servlet 并由 java 虛擬機(jī)執(zhí)行,這種編譯操作僅在對(duì) jsp 頁(yè)面的第一次請(qǐng)求時(shí)發(fā)生。
㈡運(yùn)行環(huán)境
sun 公司的 jsp 主頁(yè)在 http://www.javasoft.com/products/jsp/index.html ,從這里還可以下載 jsp 規(guī)范,這些規(guī)范定義了供應(yīng)商在創(chuàng)建 jsp 引擎時(shí)所必須遵從的一些規(guī)則。
執(zhí)行 jsp 代碼需要在服務(wù)器上安裝 jsp 引擎。此處我們使用的是 sun 的 javaserver web development kit ( jswdk )。為便于學(xué)習(xí),這個(gè)軟件包提供了大量可供修改的示例。安裝 jswdk 之后,只需執(zhí)行 startserver 命令即可啟動(dòng)服務(wù)器。在默認(rèn)配置下服務(wù)器在端口 8080 監(jiān)聽(tīng),使用 http://localhost:8080 即可打開(kāi)缺省頁(yè)面。
在運(yùn)行 jsp 示例頁(yè)面之前,請(qǐng)注意一下安裝 jswdk 的目錄,特別是“ work ”子目錄下的內(nèi)容。執(zhí)行示例頁(yè)面時(shí),可以在這里看到 jsp 頁(yè)面如何被轉(zhuǎn)換成 java 源文件,然后又被編譯成 class 文件(即 servlet )。 jswdk 軟件包中的示例頁(yè)面分為兩類,它們或者是 jsp 文件,或者是包含一個(gè)表單的 html 文件,這些表單均由 jsp 代碼處理。與 asp 一樣, jsp 中的 java 代碼均在服務(wù)器端執(zhí)行。因此,在瀏覽器中使用“查看源文件”菜單是無(wú)法看到 jsp 源代碼的,只能看到結(jié)果 html 代碼。所有示例的源代碼均通過(guò)一個(gè)單獨(dú)的“ examples ”頁(yè)面提供。
㈢ jsp 頁(yè)面示例
下面我們分析一個(gè)簡(jiǎn)單的 jsp 頁(yè)面。您可以在 jswdk 的 examples 目錄下創(chuàng)建另外一個(gè)目錄存放此文件,文件名字可以任意,但擴(kuò)展名必須為 .jsp 。從下面的代碼清單中可以看到, jsp 頁(yè)面除了比普通 html 頁(yè)面多一些 java 代碼外,兩者具有基本相同的結(jié)構(gòu)。 java 代碼是通過(guò) < % 和 %> 符號(hào)加入到 html 代碼中間的,它的主要功能是生成并顯示一個(gè)從 0 到 9 的字符串。在這個(gè)字符串的前面和后面都是一些通過(guò) html 代碼輸出的文本。
< html>
< head>< title>jsp 頁(yè)面 < /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>
這個(gè) jsp 頁(yè)面可以分成幾個(gè)部分來(lái)分析。
首先是 jsp 指令。它描述的是頁(yè)面的基本信息,如所使用的語(yǔ)言、是否維持會(huì)話狀態(tài)、是否使用緩沖等。 jsp 指令由 < %@ 開(kāi)始, %> 結(jié)束。在本例中,指令“ < %@ page language="java" %> ”只簡(jiǎn)單地定義了本例使用的是 java 語(yǔ)言(當(dāng)前,在 jsp 規(guī)范中 java 是唯一被支持的語(yǔ)言)。
接下來(lái)的是 jsp 聲明。 jsp 聲明可以看成是定義類這一層次的變量和方法的地方。 jsp 聲明由 < %! 開(kāi)始, %> 結(jié)束。如本例中的“ < %! string str="0"; %> ”定義了一個(gè)字符串變量。在每一項(xiàng)聲明的后面都必須有一個(gè)分號(hào),就象在普通 java 類中聲明成員變量一樣。
位于 < % 和 %> 之間的代碼塊是描述 jsp 頁(yè)面處理邏輯的 java 代碼,如本例中的 for 循環(huán)所示。
最后,位于 < %= 和 %> 之間的代碼稱為 jsp 表達(dá)式,如本例中的“ < %= str %> ”所示。 jsp 表達(dá)式提供了一種將 jsp 生成的數(shù)值嵌入 html 頁(yè)面的簡(jiǎn)單方法。
新聞熱點(diǎn)
疑難解答
圖片精選