[摘要] 本文比較了電子商務(wù)網(wǎng)站的各種編程技術(shù),指出了JSP的特點。指出了XML技術(shù)在內(nèi)容定義和數(shù)據(jù)定義方面的優(yōu)越性。論述了JSP和XML相結(jié)合的主要方法和現(xiàn)有的技術(shù),指出了數(shù)據(jù)庫技術(shù)對XML的支持以及XML和數(shù)據(jù)庫技術(shù)的交互方法。
[關(guān)鍵詞] JSPXML數(shù)據(jù)庫電子商務(wù)
隨著Internet技術(shù)的進(jìn)步和應(yīng)用領(lǐng)域的不斷擴(kuò)展,使得電子商務(wù)具有更加堅實的技術(shù)基礎(chǔ)和良好的應(yīng)用前景。JSP和XML技術(shù)在構(gòu)建電子商務(wù)站點上有其獨特的優(yōu)越性。
一、Web服務(wù)器編程技術(shù)比較
要構(gòu)建一個電子商務(wù)網(wǎng)站,首先就是要對外發(fā)布其Web網(wǎng)頁,而靜態(tài)的HTML網(wǎng)頁已經(jīng)不能滿足網(wǎng)絡(luò)交互性的要求。而通過發(fā)布動態(tài)網(wǎng)頁,可以避免在客戶端安裝專門的應(yīng)用程序,只需要在客戶端有一個Web瀏覽器即可,而且服務(wù)程序的改動對于每個客戶端來說都是透明的,不需要重新設(shè)置客戶端的狀態(tài)或安裝客戶端程序。CGI、ASP、PHP以及JSP都是現(xiàn)階段非常流行的動態(tài)網(wǎng)頁編程技術(shù)。
1.CGI
CGI(Common Gateway Interface:通用網(wǎng)關(guān)接口)是Web服務(wù)器與CGI應(yīng)用程序之間進(jìn)行通訊的協(xié)議。CGI程序需要讀入一長串的字符串,然后解析字符串,從中得到數(shù)據(jù),這樣便會在解讀字符串上要消耗比較多的時間。而且,對于每個新用戶的CGI服務(wù),都會在Web服務(wù)器上產(chǎn)生新的進(jìn)程,當(dāng)用戶數(shù)量急劇增加時,Web服務(wù)器的負(fù)擔(dān)將非常沉重,整體性能下降很快。另外,CGI程序在改動后,需要重新編譯,這些都限制了CGI的應(yīng)用。
2.ASP
ASP(Active Server Pages)是一個Web服務(wù)器端的開發(fā)環(huán)境。ASP以及PHP、JSP都是在HTML代碼中混合某種程序代碼,由語言引擎解釋執(zhí)行程序代碼,而由HTML代碼負(fù)責(zé)信息的發(fā)布樣式。當(dāng)用戶在客戶端通過訪問Web頁面,向服務(wù)器發(fā)送消息時,程序代碼的在服務(wù)器端執(zhí)行,結(jié)果被重新嵌入到HTML代碼中,然后一起返回給客戶端瀏覽器。ASP采用的腳本語言是VBScript或者JavaScript。但是,ASP只能在微軟的服務(wù)器產(chǎn)品上實現(xiàn),這樣就限制了ASP的可移植性。
3.PHP
PHP(Hypertext Preprocessor)可在Windows、Unix、Linux的Web服務(wù)器上正常執(zhí)行,用戶在更換服務(wù)器平臺時不需要變換PHP代碼,可移植性好。PHP有很多實現(xiàn)與數(shù)據(jù)庫相連接的函數(shù),也可以編寫外部函數(shù)去間接存取數(shù)據(jù)庫,利用PHP可以很方便地修改編碼來適應(yīng)數(shù)據(jù)庫的變化。但是,對于負(fù)荷較大的電子商務(wù)站點,PHP缺乏多層結(jié)構(gòu)支持和規(guī)模支持,數(shù)據(jù)庫接口也不夠統(tǒng)一。
4.JSP
JSP(Java Server Page)的內(nèi)置腳本語言是基于Java的程序設(shè)計語言。JSP的引擎負(fù)責(zé)將JSP頁面翻譯成Servlet代碼(.java文件),而后再編譯成Servlet可執(zhí)行文件(.class文件)。JSP引擎接收客戶端對JSP頁面的請求,并且生成JSP頁面返回給客戶端。
JSP具有Java技術(shù)特點。可移植性強,“只寫一次,各處執(zhí)行”,在Wndows、Unix、Linux等各種平臺上的程序移植可不需要改動代碼,直接運行。并且,由于Java的完全面向?qū)ο蟮臋C(jī)制,使JSP具有良好的安全性。
JSP技術(shù)強調(diào)可重用的群組件。基于組件的方法可以加速總體開發(fā)過程,節(jié)約開發(fā)時間和成本。
JSP程序員可以使用JSP標(biāo)識或者小腳本來產(chǎn)生頁面上的動態(tài)內(nèi)容,采用HTML或者XML標(biāo)識來設(shè)計和格式化頁面。這種內(nèi)容與現(xiàn)實分離的機(jī)制,既可以保護(hù)代碼的安全性,又可以保證Web瀏覽器的可用性。并且,通過開發(fā)定制的標(biāo)識庫,可以很容易地來擴(kuò)展JSP功能。這樣既減小了系統(tǒng)開發(fā)的難度,又大大增加了系統(tǒng)的可擴(kuò)展性。
JSP頁面僅在第一次被執(zhí)行時需要編譯成Servlet,以后客戶端進(jìn)行瀏覽和執(zhí)行時無需再次編譯,可以直接運行,這樣避免了服務(wù)器端運行時的語法分析,從而提高了系統(tǒng)響應(yīng)的速度。
所以,JSP技術(shù)可以實現(xiàn)功能強大的站點,JSP在開發(fā)電子商務(wù)網(wǎng)站,尤其是大型電子商務(wù)網(wǎng)站上有其獨特的優(yōu)越性。
二、XML技術(shù)在電子商務(wù)應(yīng)用中優(yōu)勢
XML(eXtensible Markup Language:可擴(kuò)展的標(biāo)識語言)是用來定義文檔標(biāo)識語言的框架,主要用來定義、存儲和發(fā)送數(shù)據(jù)信息,以使各種基于Web應(yīng)用之間能更方便的交換數(shù)據(jù)。它與HTML技術(shù)的主要不同點在于XML的標(biāo)識描述的是數(shù)據(jù)自身的結(jié)構(gòu)而不包含格式信息,而HTML的標(biāo)識設(shè)置了數(shù)據(jù)的格式。
XML文件是純粹的文本文件,并且是W3C(World Wide Web Consortium:萬維網(wǎng)聯(lián)盟)推薦的Internet標(biāo)準(zhǔn)。因此,無論什么樣的操作系統(tǒng)、編程語言等都可以接收、發(fā)送和識別。
XML支持用戶標(biāo)識,允許文檔復(fù)雜性嵌套級別到任意一級,這就使得具有良好的可擴(kuò)展性。
XML具有瀏覽器自適應(yīng)性。當(dāng)瀏覽器同時使用不同的信息源時,以及文檔在不同平臺的顯示樣式不同時,XML具有優(yōu)勢。
XML利用了一個DTD(Document Type Definition:文件類型定義)規(guī)范,用來定義XML文件的語法、句法和數(shù)據(jù)結(jié)構(gòu)的標(biāo)準(zhǔn)。這種結(jié)構(gòu)化信息模式可以允許不同格式數(shù)據(jù)進(jìn)行交換。并且現(xiàn)階段有很多現(xiàn)成的技術(shù)和標(biāo)準(zhǔn)來定義、處理以及轉(zhuǎn)換XML文檔。
利用XML技術(shù)還可以在客戶端處理消息,從而提高整個系統(tǒng)的效率。
XML在內(nèi)容定義和數(shù)據(jù)交換上的重要特性,使得XML在不同的系統(tǒng)和組織之間交互數(shù)據(jù)非常有效。因此,無論是B2C(商務(wù)—消費者),B2E(商務(wù)—企業(yè)),還是B2B(商務(wù)—商務(wù))的電子商務(wù)解決方案,XML都是進(jìn)行內(nèi)容定義和數(shù)據(jù)交換的有效途徑。
三、JSP與XML結(jié)合技術(shù)
JSP用來創(chuàng)建應(yīng)用程序服務(wù)器端程序;XML用來定義和描述數(shù)據(jù),并在服務(wù)器與系統(tǒng)的其余部分之間傳遞數(shù)據(jù)。兩者結(jié)合有利于提高頁面代碼與XML數(shù)據(jù)的分離水平,有利于簡化開發(fā)的復(fù)雜度并且改善組件與頁面代碼的可重用性。
1.JSP與XML的結(jié)合方法
(1)直接使用XML。JSP頁面中可以直接使用XML。例如:通過JSP內(nèi)嵌的Java程序,可以直接調(diào)用一個分析程序來讀寫XML數(shù)據(jù);讀取XML文件并且基于這些數(shù)據(jù)執(zhí)行動作;創(chuàng)建XML文件以發(fā)送數(shù)據(jù)到客戶程序或其他應(yīng)用程序。
(2)使用Java Bean。Java Bean技術(shù)可以使JSP將盡可能多的可重用代碼封裝起來,轉(zhuǎn)變成可重用組件。這樣,就可以達(dá)到最大優(yōu)化JSP代碼的目的。
JSP與Java Bean整合可以自動地把超文本標(biāo)志語言的表單元素翻譯成Java Bean屬性。類XML的標(biāo)識允許JSP頁面訪問Java Bean。可以使用通用的語法分析程序,在單獨的Java Bean里與XML文件交互作用。并且可以在不改動JSP頁面的情況下改變分析程序。此外,Beans還可以使用XSLT來執(zhí)行XML文件的轉(zhuǎn)換。
(3)通過標(biāo)識庫與XML結(jié)合。自定義標(biāo)識庫可以把特定的Java代碼與每個標(biāo)識都關(guān)聯(lián)起來。標(biāo)識庫的描述符是一個包含一個或多個自定義標(biāo)識的XML格式的描述文件。這個文件被稱為TLD(Tag Library Descriptor:標(biāo)識庫描述)。TLD描述自定義標(biāo)識并把它和標(biāo)識處理程序類關(guān)聯(lián)起來。一個標(biāo)識庫德表示可以代替為了完成這段程序的邏輯的相應(yīng)的Java程序代碼。每個標(biāo)識都相當(dāng)于一個相同名稱的Java類。當(dāng)使用標(biāo)識庫時,JSP頁面看上去就非常象XML文件了。當(dāng)JSP頁面被處理時,引擎執(zhí)行與標(biāo)識相關(guān)聯(lián)的程序代碼。
2.解析XML的API
DOM和SAX是SUN公司開發(fā)的兩個解析XML的API。
(1)采用DOM(Document Object Model:文檔對象模型)。XML的數(shù)據(jù)組織為層次的樹型結(jié)構(gòu),樹的節(jié)點是一個個對象。DOM就是對這個樹型結(jié)構(gòu)的每個節(jié)點對象的描述。通過訪問DOM樹和存取節(jié)點對象就能夠達(dá)到解析XML和存取XML文檔的內(nèi)容的目的。
在處理DOM的時候,需要讀入整個XML文檔,然后在內(nèi)存中創(chuàng)建DOM樹,生成DOM樹上的每個節(jié)點對象。當(dāng)文檔很大時,處理DOM將會大量消耗內(nèi)存等資源。
(2)采用SAX(Simple API for XML Paring)。SAX模型與DOM的文檔驅(qū)動不同,SAX是基于事件驅(qū)動的,即通過事件驅(qū)動來識別XML文檔的內(nèi)容。與DOM相比,SAX并不需要讀入整個文檔,文檔的讀入和SAX解析過程是同步進(jìn)行的。
四、XML與數(shù)據(jù)庫技術(shù)的交互
值得注意的是,僅僅依靠XML這樣的文件系統(tǒng)是不夠的。例如,在經(jīng)常要接受用戶更新信息的情況下,文件系統(tǒng)由于缺乏并發(fā)機(jī)制,并不支持同時寫入。而數(shù)據(jù)庫技術(shù)則支持事務(wù)處理,可以進(jìn)行并發(fā)控制。并且,現(xiàn)在流行的關(guān)系數(shù)據(jù)庫管理系統(tǒng)提供復(fù)雜的查詢語句,存取控制策略等強大的功能。各種程序設(shè)計語言也提供了強大的數(shù)據(jù)庫編程功能。
但是,數(shù)據(jù)庫技術(shù)不具備XML靈活輕巧,可擴(kuò)展性好,交互性強的優(yōu)點。這時,我們可以將XML和數(shù)據(jù)庫技術(shù)結(jié)合起來,充分利用這兩者的長處。
現(xiàn)在主流的數(shù)據(jù)庫,如SQL Server、Oracle等,都提供了很多方法和技術(shù)充分支持XML,使之能夠與XML交互數(shù)據(jù)。
1.XML與SQL Server交互
Microsoft SQL Server2000完全支持XML。利用SQL Server,用戶在瀏覽器端輸入一個URI地址,即可訪問SQL Server數(shù)據(jù)庫,而返回的結(jié)果是一個XML文檔。它還允許通過輸入樣式參數(shù)來指定樣式信息,這樣就可以在瀏覽器中輸出豐富的頁面。
2.XML與Oracle交互
Oracle全面支持XML,Oracle數(shù)據(jù)庫實現(xiàn)了許多基于標(biāo)準(zhǔn)的數(shù)據(jù)庫類型和函數(shù),例如,XMLType、XMLAgg、XMLConcat、XMLElement以及XMLForest等,能夠查詢關(guān)系數(shù)據(jù)并且返回XML文檔。對于要求通過其內(nèi)容管理應(yīng)用程序存儲和檢索大量復(fù)雜XML的開發(fā)者來說,Oracle中的XML類型提供導(dǎo)航功能來優(yōu)化性能。Oracle主要提供以下兩種工具來支持基于XML的數(shù)據(jù)庫開發(fā):
(1)提供內(nèi)置的XDK(XML Developer Kit:XML開發(fā)者工具包)。使用這些組件在Oracle 中生成、轉(zhuǎn)換和存儲XML格式的數(shù)據(jù),幫助開發(fā)者迅速用XML來支持其應(yīng)用程序。
(2)將Java XML Developer Kit(J XDK)預(yù)裝到Oracle中,開發(fā)者能夠輕松地利用Java編程語言訪問基于W3C的功能。同時可以看出,由于Oracle對Java的大力支持,在以O(shè)racle作為后端數(shù)據(jù)庫服務(wù)器的網(wǎng)站構(gòu)建中,JSP具有先天的優(yōu)勢。
五、結(jié)論
可以將XML作為前端的編程工具,主要響應(yīng)查詢等不需要大量更新的數(shù)據(jù)請求,以及進(jìn)行企業(yè)間或者企業(yè)與客戶間的數(shù)據(jù)交換;而將大型數(shù)據(jù)庫作為后端,用來存儲海量的數(shù)據(jù)和處理更新;XML與數(shù)據(jù)庫之間利用JSP來實現(xiàn)數(shù)據(jù)聯(lián)系和其他控制。這樣,就可以利用JSP、XML和數(shù)據(jù)庫技術(shù)各自的優(yōu)點,來構(gòu)建技術(shù)先進(jìn)、性能優(yōu)越、交互性強、便于擴(kuò)展的電子商務(wù)站點。
本文中所涉及到的圖表、注解、公式等內(nèi)容請以PDF格式閱讀原文。