XML與JSP的聯(lián)手(1)
發(fā)表時(shí)間:2023-08-09 來(lái)源:明輝站整理相關(guān)軟件相關(guān)文章人氣:
[摘要]概覽: xml和jsp是這些日子中最熱的東西。本文介紹如何聯(lián)合這兩種技術(shù)來(lái)建設(shè)動(dòng)態(tài)網(wǎng)站。你還可以同時(shí)看一下dom,xpath,xsl,和其它java-xml技術(shù)的示例代碼。 我們?cè)诖思僭O(shè)你已經(jīng)了解j...
概覽:
xml和jsp是這些日子中最熱的東西。本文介紹如何聯(lián)合這兩種技術(shù)來(lái)建設(shè)動(dòng)態(tài)網(wǎng)站。你還可以同時(shí)看一下dom,xpath,xsl,和其它java-xml技術(shù)的示例代碼。
我們?cè)诖思僭O(shè)你已經(jīng)了解javaserver pages(jsp)和extensible markup language (xml)。但也許你對(duì)該如何綜合使用它們?nèi)匀挥行┟曰蟆?
jsp的應(yīng)用很容易,你可以用它設(shè)計(jì)網(wǎng)頁(yè),使之看起來(lái)似乎和html一樣。唯一的不同是jsp是動(dòng)態(tài)執(zhí)行的。例如,它們可以處理表單form和讀寫(xiě)數(shù)據(jù)庫(kù)。
xml的應(yīng)用的說(shuō)明則比較困難。似乎所有的產(chǎn)品都支持它,每個(gè)人也好象都以各種不同目的在使用它。
在本文中,你可以看到如何使用一種相當(dāng)先進(jìn)的方式用xml來(lái)設(shè)計(jì)一個(gè)系統(tǒng)。許多站點(diǎn)有巨量數(shù)據(jù)收集并以一種很標(biāo)準(zhǔn)或很不標(biāo)準(zhǔn)的方式來(lái)顯示它們。我將設(shè)計(jì)一個(gè)系統(tǒng),它使用xml文件在web服務(wù)器上進(jìn)行存儲(chǔ),并用jsp來(lái)顯示數(shù)據(jù)。
xml vs 關(guān)系型數(shù)據(jù)庫(kù)
"等一下!"你可能問(wèn),"你用xml文件存儲(chǔ)數(shù)據(jù)嗎?為什么不使用數(shù)據(jù)庫(kù)?"
這個(gè)問(wèn)題問(wèn)的很好。我的回答是,對(duì)很多目的用途來(lái)說(shuō),用數(shù)據(jù)庫(kù)太過(guò)浪費(fèi)了。.要使用一個(gè)數(shù)據(jù)庫(kù),你必須安裝和支持一個(gè)分離的服務(wù)器處理進(jìn)程(a separate server process),它常要求有安裝和支持它的administrator。你必須學(xué)習(xí)sql, 并用sql寫(xiě)查詢(xún),然后轉(zhuǎn)換數(shù)據(jù),再返回。而如果你用xml文件存儲(chǔ)數(shù)據(jù),將可減少額外的服務(wù)器的負(fù)荷。還有,你還找到了一個(gè)編輯數(shù)據(jù)的簡(jiǎn)單方法。你只要使用文本編輯器,而不必使用復(fù)雜的數(shù)據(jù)庫(kù)工具。xml文件很容易備份,和朋友共享,或下載到你的客戶(hù)端。同樣的,你可以方便地通過(guò)ftp上載新的數(shù)據(jù)到你的站點(diǎn)。
xml還有一個(gè)更抽象的優(yōu)點(diǎn),即作為層次型的格式比關(guān)系型的更好。 它可以用一種很直接的方式來(lái)設(shè)計(jì)數(shù)據(jù)結(jié)構(gòu)來(lái)符合你的需要。你不需要使用一個(gè)實(shí)體-關(guān)系編輯器,也不需要使你的圖表(schema)標(biāo)準(zhǔn)化。 如果你有一個(gè)元素(element)包含了另一個(gè)元素,你可以直接在格式中表示它,而不需要使用表的關(guān)聯(lián)。
注意,在很多應(yīng)用中,依靠文件系統(tǒng)是不夠充分的。如果更新很多,文件系統(tǒng)會(huì)因?yàn)橥瑫r(shí)寫(xiě)入而受到破壞。數(shù)據(jù)庫(kù)則通常支持事務(wù)處理,可以應(yīng)付所發(fā)生的請(qǐng)求而不至于損壞。對(duì)于復(fù)雜的查詢(xún)統(tǒng)計(jì)要有反復(fù)、及時(shí)的更新,此時(shí)數(shù)據(jù)庫(kù)表現(xiàn)都很優(yōu)秀。當(dāng)然,關(guān)系型數(shù)據(jù)庫(kù)還有很多優(yōu)點(diǎn),包括豐富的查詢(xún)語(yǔ)言,圖表化工具,可伸縮性,存取控制等等。
(注意:你可以使用簡(jiǎn)單的文件鎖定來(lái)提供一個(gè)事務(wù)處理服務(wù)器,你還可以在java中執(zhí)行一種 xml index-and-search工具,不過(guò)這已經(jīng)是另外一篇文章的主題了。)
在下面這樣的案例中,正如大多數(shù)中小規(guī)模的、基于發(fā)布信息的站點(diǎn)一樣,你可能涉及的大多數(shù)數(shù)據(jù)存取都是讀,而不是寫(xiě),數(shù)據(jù)雖然可能很大,但相對(duì)來(lái)說(shuō)并沒(méi)有經(jīng)常的更新變化,你也不需要做很復(fù)雜的查詢(xún),即使你需要做,也將用一個(gè)獨(dú)立的查詢(xún)工具,那么成熟的rdbms的優(yōu)點(diǎn)消失了,而面向?qū)ο笮偷臄?shù)據(jù)模型的優(yōu)點(diǎn)則可以得到體現(xiàn)。
最后,為你的數(shù)據(jù)庫(kù)提供一個(gè)查詢(xún)器外殼來(lái)進(jìn)行sql查詢(xún)并將他們轉(zhuǎn)化進(jìn)入xml stream也是完全有可能的。
所以你可以選擇這二種方式之一。xml正變成一種非常健壯的,便于編程的工具,作為某個(gè)成熟的數(shù)據(jù)庫(kù)的前端工具來(lái)進(jìn)行存儲(chǔ)和查詢(xún)。(oracle的xsql servlet即是這種技術(shù)的一個(gè)很好的例子。)