JavaServer PagesTM 白皮書(shū)
發(fā)表時(shí)間:2023-08-07 來(lái)源:明輝站整理相關(guān)軟件相關(guān)文章人氣:
[摘要]JavaServer PagesTM 白皮書(shū)JavaServer PagesTM (JSP)技術(shù)為創(chuàng)建顯示動(dòng)態(tài)生成內(nèi)容的Web頁(yè)面提供了一個(gè)簡(jiǎn)捷而快速的方法。JSP技術(shù)的設(shè)計(jì)目的是使得構(gòu)造基于Web...
JavaServer PagesTM 白皮書(shū)
JavaServer PagesTM (JSP)技術(shù)為創(chuàng)建顯示動(dòng)態(tài)生成內(nèi)容的Web頁(yè)面提供了一個(gè)簡(jiǎn)捷而快速的方法。JSP技術(shù)的設(shè)計(jì)目的是使得構(gòu)造基于Web的應(yīng)用程序更加容易和快捷,而這些應(yīng)用程序能夠與各種Web服務(wù)器,應(yīng)用服務(wù)器,瀏覽器和開(kāi)發(fā)工具共同工作。
本白皮書(shū)提供了JSP技術(shù)的全面概述,描述了其開(kāi)發(fā)背景以及這項(xiàng)技術(shù)的總體目標(biāo)。同時(shí),在一個(gè)簡(jiǎn)單示例中,還描述了一個(gè)基于JavaTM技術(shù)的頁(yè)面的關(guān)鍵組成部分。
開(kāi)發(fā)基于Web的應(yīng)用程序:背景
在萬(wàn)維網(wǎng)短暫的歷史中,它已經(jīng)從一個(gè)大部分顯示靜態(tài)信息的網(wǎng)絡(luò)演化到對(duì)股票進(jìn)行交易和進(jìn)行購(gòu)書(shū)操作的一個(gè)基礎(chǔ)設(shè)施。在各種各樣的應(yīng)用程序中,對(duì)于可能使用的基于Web的客戶端,看上去沒(méi)有任何限制。
基于瀏覽器客戶端的應(yīng)用程序比傳統(tǒng)的基于客戶機(jī)/服務(wù)器的應(yīng)用程序有幾個(gè)好處。這些好處包括幾乎沒(méi)有限制的客戶端訪問(wèn)和極其簡(jiǎn)化的應(yīng)用程序部署和管理(要更新一個(gè)應(yīng)用程序,管理人員只需要更改一個(gè)基于服務(wù)器的程序,而不是成千上萬(wàn)的安裝在客戶端的應(yīng)用程序)。這樣,軟件工業(yè)正迅速地向建造基于瀏覽器客戶端的多層次應(yīng)用程序邁進(jìn)。
這些快速增長(zhǎng)的精巧的基于Web的應(yīng)用程序要求開(kāi)發(fā)技術(shù)上的改進(jìn)。靜態(tài)HTML對(duì)于顯示相對(duì)靜態(tài)的內(nèi)容是不錯(cuò)的選擇;新的挑戰(zhàn)在于創(chuàng)建交互的基于Web的應(yīng)用程序,在這些程序中,頁(yè)面的內(nèi)容是基于用戶的請(qǐng)求或者系統(tǒng)的狀態(tài),而不是預(yù)先定義的文字。
對(duì)于這個(gè)問(wèn)題的一個(gè)早期解決方案是使用CGI-BIN接口;開(kāi)發(fā)人員編寫(xiě)與接口相關(guān)的單獨(dú)的程序,以及基于Web的應(yīng)用程序,后者通過(guò)Web服務(wù)器來(lái)調(diào)用前者。這個(gè)方案有著嚴(yán)重的擴(kuò)展性問(wèn)題——每個(gè)新的CGI要求在服務(wù)器上新增一個(gè)進(jìn)程。如果多個(gè)用戶并發(fā)地訪問(wèn)該程序,這些進(jìn)程將消耗該Web服務(wù)器所有的可用資源,并且系統(tǒng)性能降低到極其低下的地步。
某些Web服務(wù)器供應(yīng)商已經(jīng)嘗試通過(guò)為他們的服務(wù)器提供“插件”和API來(lái)簡(jiǎn)化Web應(yīng)用程序的開(kāi)發(fā)。這些解決方案是與特定的Web服務(wù)器相關(guān)的,不能解決跨多個(gè)供應(yīng)商的解決方案的問(wèn)題。例如,微軟的Active Server PagesTM(ASP) 技術(shù)使得在Web頁(yè)面上創(chuàng)建動(dòng)態(tài)內(nèi)容更加容易,但是也只能工作在微軟的IIS和Personal Web Server上。
還存在其他的解決方案,但是都不能使一個(gè)普通的頁(yè)面設(shè)計(jì)者能夠輕易地掌握。例如,象Java Servlets這樣的技術(shù)就可以使得用Java語(yǔ)言編寫(xiě)交互的應(yīng)用程序的服務(wù)器端的代碼變得容易。一個(gè)Java Servlets就是一個(gè)基于Java技術(shù)的運(yùn)行在服務(wù)器端的程序(與Applet不同,后者運(yùn)行在瀏覽器端)。開(kāi)發(fā)人員能夠編寫(xiě)出這樣的Servlet,以接收來(lái)自Web瀏覽器的HTTP請(qǐng)求,動(dòng)態(tài)地生成響應(yīng)(可能要查詢數(shù)據(jù)庫(kù)來(lái)完成這項(xiàng)請(qǐng)求),然后發(fā)送包含HTML或XML文檔的響應(yīng)到瀏覽器。
采用這種方法,整個(gè)網(wǎng)頁(yè)必須都在Java Servlet中制作。如果開(kāi)發(fā)人員或者Web管理人員想要調(diào)整頁(yè)面顯示,就不得不編輯并重新編譯該Java Servlet,即使在邏輯上已經(jīng)能夠運(yùn)行了。采用這種方法,生成帶有動(dòng)態(tài)內(nèi)容的頁(yè)面仍然需要應(yīng)用程序的開(kāi)發(fā)技巧。
很顯然,目前所需要的是一個(gè)業(yè)界范圍內(nèi)的創(chuàng)建動(dòng)態(tài)內(nèi)容頁(yè)面的解決方案。這個(gè)方案將解決當(dāng)前方案所受到的限制,即:
能夠在任何Web或應(yīng)用程序服務(wù)器上運(yùn)行
將應(yīng)用程序邏輯和頁(yè)面顯示分離
能夠快速地開(kāi)發(fā)和測(cè)試
簡(jiǎn)化開(kāi)發(fā)基于Web的交互式應(yīng)用程序的過(guò)程
JavaServer Pages (JSP)技術(shù)就是被設(shè)計(jì)用來(lái)滿足這樣的要求的。JSP規(guī)范是Web服務(wù)器、應(yīng)用服務(wù)器、交易系統(tǒng)、以及開(kāi)發(fā)工具供應(yīng)商間廣泛合作的結(jié)果。太陽(yáng)微系統(tǒng)公司(Sun Microsystems Inc.)開(kāi)發(fā)出這個(gè)規(guī)范來(lái)整合和平衡已經(jīng)存在的對(duì)Java編程環(huán)境(例如,Java Servlet和JavaBeansTM)進(jìn)行支持的技術(shù)和工具。其結(jié)果是產(chǎn)生了一種新的、開(kāi)發(fā)基于Web應(yīng)用程序的方法,給予使用基于組件應(yīng)用邏輯的頁(yè)面設(shè)計(jì)者以強(qiáng)大的功能。
Web應(yīng)用開(kāi)發(fā)的JavaServer Pages技術(shù)方法
在開(kāi)發(fā)JSP規(guī)范的過(guò)程中,太陽(yáng)微系統(tǒng)公司(Sun Microsystems Inc.)與許許多多主要的Web服務(wù)器、應(yīng)用服務(wù)器和開(kāi)發(fā)工具供應(yīng)商,以及各種各樣富有經(jīng)驗(yàn)的開(kāi)發(fā)團(tuán)體進(jìn)行合作。其結(jié)果是找到了一種為應(yīng)用和頁(yè)面開(kāi)發(fā)人員平衡了可移植性和易用性的開(kāi)發(fā)方法。
JSP技術(shù)在多個(gè)方面加速了動(dòng)態(tài)Web頁(yè)面的開(kāi)發(fā):
將內(nèi)容的生成和顯示進(jìn)行分離
使用JSP技術(shù),Web頁(yè)面開(kāi)發(fā)人員可以使用HTML或者XML標(biāo)識(shí)來(lái)設(shè)計(jì)和格式化最終頁(yè)面。使用JSP標(biāo)識(shí)或者小腳本來(lái)生成頁(yè)面上的動(dòng)態(tài)內(nèi)容(內(nèi)容是根據(jù)請(qǐng)求來(lái)變化的,例如請(qǐng)求帳戶信息或者特定的一瓶酒的價(jià)格)。生成內(nèi)容的邏輯被封裝在標(biāo)識(shí)和JavaBeans組件中,并且捆綁在小腳本中,所有的腳本在服務(wù)器端運(yùn)行。如果核心邏輯被封裝在標(biāo)識(shí)和Beans中,那么其他人,如Web管理人員和頁(yè)面設(shè)計(jì)者,能夠編輯和使用JSP頁(yè)面,而不影響內(nèi)容的生成。
在服務(wù)器端,JSP引擎解釋JSP標(biāo)識(shí)和小腳本,生成所請(qǐng)求的內(nèi)容(例如,通過(guò)訪問(wèn)JavaBeans組件,使用JDBCTM技術(shù)訪問(wèn)數(shù)據(jù)庫(kù),或者包含文件),并且將結(jié)果以HTML(或者XML)頁(yè)面的形式發(fā)送回瀏覽器。這有助于作者保護(hù)自己的代碼,而又保證任何基于HTML的Web瀏覽器的完全可用性。
強(qiáng)調(diào)可重用的組件
絕大多數(shù)JSP頁(yè)面依賴于可重用的,跨平臺(tái)的組件(JavaBeans或者Enterprise JavaBeansTM組件)來(lái)執(zhí)行應(yīng)用程序所要求的更為復(fù)雜的處理。開(kāi)發(fā)人員能夠共享和交換執(zhí)行普通操作的組件,或者使得這些組件為更多的使用者或者客戶團(tuán)體所使用;诮M件的方法加速了總體開(kāi)發(fā)過(guò)程,并且使得各種組織在他們現(xiàn)有的技能和優(yōu)化結(jié)果的開(kāi)發(fā)努力中得到平衡。
采用標(biāo)識(shí)簡(jiǎn)化頁(yè)面開(kāi)發(fā)
Web頁(yè)面開(kāi)發(fā)人員不會(huì)都是熟悉腳本語(yǔ)言的編程人員。JavaServer Page技術(shù)封裝了許多功能,這些功能是在易用的、與JSP相關(guān)的XML標(biāo)識(shí)中進(jìn)行動(dòng)態(tài)內(nèi)容生成所需要的。標(biāo)準(zhǔn)的JSP標(biāo)識(shí)能夠訪問(wèn)和實(shí)例化JavaBeans組件,設(shè)置或者檢索組件屬性,下載Applet,以及執(zhí)行用其他方法更難于編碼和耗時(shí)的功能。
通過(guò)開(kāi)發(fā)定制化標(biāo)識(shí)庫(kù),JSP技術(shù)是可以擴(kuò)展的。今后,第三方開(kāi)發(fā)人員和其他人員可以為常用功能創(chuàng)建自己的標(biāo)識(shí)庫(kù)。這使得Web頁(yè)面開(kāi)發(fā)人員能夠使用熟悉的工具和如同標(biāo)識(shí)一樣的執(zhí)行特定功能的構(gòu)件來(lái)工作。
JSP技術(shù)很容易整合到多種應(yīng)用體系結(jié)構(gòu)中,以利用現(xiàn)存的工具和技巧,并且擴(kuò)展到能夠支持企業(yè)級(jí)的分布式應(yīng)用。作為采用Java技術(shù)家族的一部分,以及Java 2(企業(yè)版體系結(jié)構(gòu))的一個(gè)組成部分,JSP技術(shù)能夠支持高度復(fù)雜的基于Web的應(yīng)用。
由于JSP頁(yè)面的內(nèi)置腳本語(yǔ)言是基于Java編程語(yǔ)言的,而且所有的JSP頁(yè)面都被編譯成為Java Servlet,JSP頁(yè)面就具有Java技術(shù)的所有好處,包括健壯的存儲(chǔ)管理和安全性。
作為Java平臺(tái)的一部分,JSP擁有Java編程語(yǔ)言“一次編寫(xiě),各處運(yùn)行”的特點(diǎn)。隨著越來(lái)越多的供應(yīng)商將JSP支持添加到他們的產(chǎn)品中,您可以使用自己所選擇的服務(wù)器和工具,更改工具或服務(wù)器并不影響當(dāng)前的應(yīng)用。
當(dāng)與Java 2平臺(tái),企業(yè)版(J2EE)和Enterprise JavaBean技術(shù)整合時(shí),JSP頁(yè)面將提供企業(yè)級(jí)的擴(kuò)展性和性能,這對(duì)于在虛擬企業(yè)中部署基于Web的應(yīng)用是必需的。
JSP頁(yè)面看上去象什么?
JSP頁(yè)面看上去象標(biāo)準(zhǔn)的HTML和XML頁(yè)面,并附帶有JSP引擎能夠處理和抽取的額外元件。通常,JSP元件創(chuàng)建插入最終頁(yè)面的文本。
使用示例是描述JSP技術(shù)的最好方法。下面的JSP頁(yè)面非常簡(jiǎn)單;它打印帶年、當(dāng)月的天,并且根據(jù)時(shí)間使用"Good Morning"和"Good Afternoon"對(duì)您表示歡迎。
該頁(yè)面結(jié)合了普通的HTML和大量JSP元件組成。
對(duì)時(shí)鐘JavaBeans組件的調(diào)用
對(duì)一個(gè)外部文件的包含(用于著作權(quán)信息)
JSP表達(dá)式和腳本
<HTML>
<%@ page language=="java" imports=="com.wombat.JSP.*" %>
<H1>Welcome</H1>
<P>Today is </P>
<jsp:useBean id=="clock" class=="calendar.jspCalendar" />
<UL>
<LI>Day: <%==clock.getDayOfMonth() %>
<LI>Year: <%==clock.getYear() %>
</UL>
<% if (Calendar.getInstance().get(Calendar.AM_PM) ==== Calendar.AM) { %>
Good Morning
<% } else { %>
Good Afternoon
<% } %>
<%@ include file=="copyright.html" %>
</HTML>
這個(gè)頁(yè)面包含下面這些組件:
一個(gè)JSP指示將信息傳送到JSP引擎。在這個(gè)示例中,第一行指出從該頁(yè)面即將訪問(wèn)的一些Java編程語(yǔ)言的擴(kuò)展的位置。指示被設(shè)置在<%@和%>標(biāo)記中。
固定模板數(shù)據(jù):所有JSP引擎不能識(shí)別的標(biāo)識(shí)將隨結(jié)果頁(yè)面發(fā)送。通常,這些標(biāo)識(shí)是HTML或者XML標(biāo)識(shí)。在上面的例子中包括無(wú)序列表(UL)和H1標(biāo)識(shí)。
JSP動(dòng)作或者標(biāo)識(shí):這些通常作為標(biāo)準(zhǔn)或定制標(biāo)識(shí)被實(shí)現(xiàn),并且具有XML標(biāo)識(shí)的語(yǔ)法。在這個(gè)例子中,jsp:useBean標(biāo)識(shí)實(shí)例化服務(wù)器端的Clock JavaBean。
一個(gè)表達(dá)式:JSP引擎計(jì)算在<%==和%>標(biāo)記間的所有東西。在上面的列表項(xiàng)中,時(shí)鐘組件(Clock)的Day和Year屬性值作為字符串返回,并且作為輸出插入到JSP文件中。在上面的例子中,第一個(gè)列表項(xiàng)是日子,第二個(gè)是年份。
小腳本是執(zhí)行不為標(biāo)識(shí)所支持的功能或者將所有的東西捆綁在一起的小的腳本。JSP 1.0軟件的內(nèi)置腳本語(yǔ)言是基于Java語(yǔ)言的。在上面示例中的小腳本確定現(xiàn)在是上午還是下午,并且據(jù)此來(lái)歡迎用戶。
這個(gè)例子可能小了一點(diǎn),但是技術(shù)上卻不是。從業(yè)務(wù)上可以將關(guān)鍵的處理封裝在服務(wù)器端的組件中,并且Web開(kāi)發(fā)人員能夠使用熟悉的語(yǔ)法和工具很容易地訪問(wèn)這些信息;贘ava的小腳本提供了一種靈活的方式以執(zhí)行其他功能,而不要求擴(kuò)展的腳本語(yǔ)言。頁(yè)面作為整體是可讀和可理解的,這就使得查找或者預(yù)防問(wèn)題以及
共享工作更加容易。
這些組件中的一部分在下面有更詳細(xì)的描述。
JSP指示
JSP頁(yè)面使用JSP指示將指令傳遞到JSP引擎。這其中包括:
JSP頁(yè)面指示傳遞頁(yè)面相關(guān)的信息,例如緩沖區(qū)和線程信息或者出錯(cuò)處理。
語(yǔ)言指示指定腳本語(yǔ)言,以及所有的擴(kuò)展。
包含指示(在上面例子中有顯示)可以被用來(lái)在頁(yè)面中包含一個(gè)外部的文檔。一個(gè)好的例子是著作權(quán)文檔或者公司信息文檔——在一個(gè)集中地點(diǎn)保存該文檔并且在頁(yè)面中包含比在各個(gè)JSP頁(yè)面中更新要容易些。當(dāng)然,被包含的文件也可能是另一個(gè)JSP文件。
標(biāo)識(shí)庫(kù)指示指出頁(yè)面可以調(diào)用的一個(gè)客戶標(biāo)識(shí)庫(kù)。
JSP標(biāo)識(shí)
絕大多數(shù)JSP處理將通過(guò)與JSP相關(guān)的基于XML的標(biāo)識(shí)完成。JSP 1.0中包含大量標(biāo)準(zhǔn)標(biāo)識(shí),這些標(biāo)識(shí)作為核心標(biāo)識(shí)包括:
jsp:useBean 這個(gè)標(biāo)識(shí)聲明對(duì)一個(gè)JavaBeans組件實(shí)例的使用。如果該組件的實(shí)例不存在,JavaBeans組件將實(shí)例化和注冊(cè)這個(gè)標(biāo)識(shí)。
jsp:setProperty 這個(gè)標(biāo)識(shí)在組件的實(shí)例中設(shè)置一個(gè)屬性的值。
jsp:getProperty 這個(gè)標(biāo)識(shí)獲取一個(gè)組件的實(shí)例的屬性值,將其轉(zhuǎn)化為字符串,并且將它放入隱含對(duì)象"out"中。
jsp:include
jsp:forward
1.1版本將包含更多的標(biāo)準(zhǔn)標(biāo)識(shí)。
標(biāo)識(shí)的好處在于它們易于在應(yīng)用程序間使用和共享;跇(biāo)識(shí)的語(yǔ)法的真正威力來(lái)自于客戶標(biāo)識(shí)庫(kù)的開(kāi)發(fā),使得工具供應(yīng)商或其他人員能夠?yàn)樘囟ǖ囊髣?chuàng)建和分派標(biāo)識(shí)。
腳本元件
JSP頁(yè)面可以在頁(yè)面中包含小的腳本,稱之為小腳本(scriptlets)。小腳本是一個(gè)代碼片段,在請(qǐng)求的處理過(guò)程中被執(zhí)行。小腳本可以和頁(yè)面中的靜態(tài)元件組合(正如上面的例子一樣)起來(lái)創(chuàng)建動(dòng)態(tài)生成的頁(yè)面。
腳本在<%和%>標(biāo)志中被描述。在這對(duì)標(biāo)志中的所有東西都會(huì)被腳本描述語(yǔ)言引擎執(zhí)行,在我們的例子中是主機(jī)上的Java虛擬機(jī)。
JSP規(guī)范支持所有常用的腳本元件,包括表達(dá)式和聲明。
JSP頁(yè)面的應(yīng)用模型
JSP頁(yè)面由JSP引擎執(zhí)行,引擎安裝在Web服務(wù)器或者使用JSP的應(yīng)用服務(wù)器上。JSP引擎接受客戶端對(duì)JSP頁(yè)面的請(qǐng)求,并且生成JSP頁(yè)面給客戶端的響應(yīng)。
JSP頁(yè)面通常被編譯成為Java Servlet。后者是一個(gè)標(biāo)準(zhǔn)的Java擴(kuò)展,在www.java.sun.com站點(diǎn)有更詳細(xì)的描述。頁(yè)面開(kāi)發(fā)人員能夠訪問(wèn)全部的Java應(yīng)用環(huán)境,以利用Java技術(shù)的擴(kuò)展性和可移植性。
當(dāng)JSP頁(yè)面第一次被調(diào)用時(shí),如果它還不存在,就會(huì)被編譯成為一個(gè)Java Servlet類,并且存儲(chǔ)在服務(wù)器的內(nèi)存中。這使得在接下來(lái)的對(duì)該頁(yè)面的調(diào)用有非?斓捻憫(yīng)。(這避免了CGI-BIN為每個(gè)HTTP請(qǐng)求生成一個(gè)新的進(jìn)程的問(wèn)題,或是服務(wù)器端引用所引起的運(yùn)行時(shí)語(yǔ)法分析。)
JSP頁(yè)面可以包含在多種不同的應(yīng)用體系結(jié)構(gòu)或者模型中。JSP頁(yè)面可以用于由不同協(xié)議、組件和格式所組成的聯(lián)合體中。下面的小節(jié)描述了一些可能發(fā)生的情況。
一個(gè)簡(jiǎn)單應(yīng)用
在一個(gè)簡(jiǎn)單實(shí)現(xiàn)中,瀏覽器直接調(diào)用JSP頁(yè)面,JSP頁(yè)面自己生成被請(qǐng)求的內(nèi)容(可能會(huì)調(diào)用JDBC直接從數(shù)據(jù)庫(kù)中獲取信息)。JSP頁(yè)面能夠調(diào)用JDBC或者Java BlendTM組件來(lái)生成結(jié)果,并且創(chuàng)建標(biāo)準(zhǔn)的HTML,作為結(jié)果發(fā)送回瀏覽器。
這個(gè)模型基本上用JSP頁(yè)面(編譯成為Java Servlet)代替了CGI-BIN概念。這個(gè)方法擁有下列優(yōu)點(diǎn):
簡(jiǎn)單而快速地編程
頁(yè)面作者可以很容易地根據(jù)請(qǐng)求和資源狀態(tài)生成動(dòng)態(tài)內(nèi)容
這個(gè)結(jié)構(gòu)在許多應(yīng)用上工作良好,但不能擴(kuò)展到大量的基于Web的并發(fā)客戶訪問(wèn)稀少的企業(yè)資源,因?yàn)槊總(gè)客戶必須建立或者共享一個(gè)到可用內(nèi)容資源的連接。例如,如果JSP頁(yè)面訪問(wèn)數(shù)據(jù)庫(kù),可能生成許多到數(shù)據(jù)庫(kù)的連接,這將影響到數(shù)據(jù)庫(kù)的性能。
使用Java Servlet的一個(gè)靈活的應(yīng)用
在另一種可能的配置中,基于Web的客戶機(jī)可能直接對(duì)Java Servlet進(jìn)行請(qǐng)求,Servlet生成動(dòng)態(tài)內(nèi)容,將結(jié)果捆綁到一個(gè)結(jié)果對(duì)象中并且調(diào)用JSP頁(yè)面。JSP頁(yè)面從該對(duì)象中訪問(wèn)動(dòng)態(tài)內(nèi)容,并且將結(jié)果(例如HTML)發(fā)送回瀏覽器。
這個(gè)方法創(chuàng)建了更多的可以為應(yīng)用程序間共享的可重用的組件,并且可以作為更大的應(yīng)用的一部分完成。但是,在處理如數(shù)據(jù)庫(kù)一樣的企業(yè)資源的連接時(shí),還是存在擴(kuò)展性問(wèn)題。
采用企業(yè)級(jí)JavaBean技術(shù)的可擴(kuò)展處理
JSP頁(yè)面也可以作為企業(yè)級(jí)JavaBean(EJB)體系結(jié)構(gòu)中的一個(gè)中間層。在這種情況下,JSP頁(yè)面和后端資源通過(guò)EJB組件進(jìn)行交互。
EJB組件管理對(duì)后端資源的訪問(wèn),從而為眾多的并發(fā)使用者提供可擴(kuò)展的性能。對(duì)于電子商務(wù)或者其他應(yīng)用,EJB管理交易和潛在的安全性。這將簡(jiǎn)化JSP頁(yè)面。這個(gè)模型將為Java 2企業(yè)版(J2EE)平臺(tái)所支持。
JSP頁(yè)面與XML技術(shù)的集成
JSP頁(yè)面可以用于生成XML和HTML頁(yè)面。
對(duì)于簡(jiǎn)單的XML生成,開(kāi)發(fā)人員可以包含XML標(biāo)識(shí)和JSP頁(yè)面的靜態(tài)模板部分。對(duì)于動(dòng)態(tài)XML生成,使用基于服務(wù)器的對(duì)象和生成XML輸出的客戶化標(biāo)識(shí)。
JSP頁(yè)面與XML工具不是不兼容的。盡管Sun在設(shè)計(jì)JSP規(guī)范時(shí)使得JSP頁(yè)面即使手工操作對(duì)于創(chuàng)作者而言也是很容易的,JSP規(guī)范同時(shí)也提供了一個(gè)機(jī)制以便于創(chuàng)建任意JSP頁(yè)面的一個(gè)XML版本。通過(guò)這種方法,XML工具能夠創(chuàng)作和操作JSP頁(yè)面。
通過(guò)將JSP標(biāo)識(shí)和元件轉(zhuǎn)換為與XML兼容的對(duì)等物,可以使用基于XML的工具來(lái)操作JSP頁(yè)面。例如,腳本可以被包含在<%和%>之中,或者基于XML標(biāo)志的<jsp:scriptlet>和</jsp:scriptlet>中。事實(shí)上,經(jīng)過(guò)下面這樣簡(jiǎn)單的幾步將JSP頁(yè)面轉(zhuǎn)換為XML頁(yè)面是可能的,這些步驟包括:
增加一個(gè)JSP根元件
將元件和指示轉(zhuǎn)換為XML兼容的對(duì)等物
為頁(yè)面上其他的元件(通常非JSP)創(chuàng)建CDATA元件
通過(guò)這個(gè)與XML兼容的方法,創(chuàng)建HTML頁(yè)面的設(shè)計(jì)者仍然擁有一個(gè)快速創(chuàng)建動(dòng)態(tài)Web頁(yè)面的易用環(huán)境,同時(shí),基于XML的工具和服務(wù)可以與JSP頁(yè)面集成并且和JSP兼容的服務(wù)器一起工作。
JSP技術(shù)的未來(lái)
JSP技術(shù)被設(shè)計(jì)為一個(gè)開(kāi)放的,可擴(kuò)展的建立動(dòng)態(tài)Web頁(yè)面的標(biāo)準(zhǔn)。開(kāi)發(fā)人員可以使用JSP頁(yè)面來(lái)創(chuàng)建可移植的Web應(yīng)用,在不同的Web和應(yīng)用服務(wù)器上為不同的場(chǎng)合所運(yùn)行,而不論采用什么適合本身場(chǎng)合和需要的創(chuàng)建工具。
通過(guò)與業(yè)界領(lǐng)袖的合作,Sun保證JSP規(guī)范是開(kāi)放的和可移植的?梢允褂萌魏慰蛻魴C(jī)和服務(wù)器平臺(tái),在任何地方編寫(xiě)和部署它們。將來(lái),工具供應(yīng)商和其他廠商將通過(guò)為專門(mén)的功能提供客戶化的標(biāo)識(shí)庫(kù)而擴(kuò)展平臺(tái)的功能。
JSP規(guī)范的1.0版本是通向動(dòng)態(tài)Web頁(yè)面生成的一個(gè)開(kāi)放的工業(yè)標(biāo)準(zhǔn)方法的第一步。1.0版本通過(guò)一個(gè)核心標(biāo)識(shí)集、隱含對(duì)象以及開(kāi)始創(chuàng)建動(dòng)態(tài)Web頁(yè)面所需的基本功能構(gòu)成了該方法的基礎(chǔ)。已經(jīng)有幾個(gè)Web服務(wù)器,應(yīng)用服務(wù)器和開(kāi)發(fā)工具供應(yīng)商正在為他們的產(chǎn)品添加JSP1.0的支持,這樣在業(yè)界已經(jīng)擁有了最初的、立即的支持。
在1999晚些時(shí)候?qū)⑼瓿傻?.1版本,通過(guò)更多的XML支持、客戶化標(biāo)識(shí)、以及與J2EE的集成而擴(kuò)展這個(gè)版本。并且供應(yīng)商們可能會(huì)有選擇地?cái)U(kuò)展和擴(kuò)充在JSP規(guī)范中基本的、必需的功能。JSP引擎能夠強(qiáng)有力地支持多種腳本語(yǔ)言和對(duì)象模型。在業(yè)界擴(kuò)充和使用JSP技術(shù)能力的同時(shí),也向Sun承諾將保證JSP技術(shù)保持平臺(tái)和服務(wù)器間固有的可移植性。