明輝手游網(wǎng)中心:是一個(gè)免費(fèi)提供流行視頻軟件教程、在線學(xué)習(xí)分享的學(xué)習(xí)平臺(tái)!

用Java完成可保存狀態(tài)的數(shù)據(jù)庫(kù)生成XML樹(shù)(1)-基于weblogic,包括一些基礎(chǔ)問(wèn)題,10分詳細(xì)的。

[摘要]用Java實(shí)現(xiàn)可保存狀態(tài)的數(shù)據(jù)庫(kù)生成XML樹(shù)目錄0.關(guān)鍵字詞注釋11.目的12.設(shè)計(jì)思想13.實(shí)現(xiàn)概要14.實(shí)現(xiàn)步驟24.1.XML文檔結(jié)構(gòu)定義24.2.數(shù)據(jù)表的結(jié)構(gòu)定義44.3.構(gòu)造生成XML的servlet44.4.構(gòu)造顯示樹(shù)型結(jié)構(gòu)的XSL模版84.5.構(gòu)造生成點(diǎn)擊樹(shù)型XMl顯示詳細(xì)節(jié)點(diǎn)內(nèi)容的...
用Java實(shí)現(xiàn)可保存狀態(tài)的數(shù)據(jù)庫(kù)生成XML樹(shù)
目錄
0.關(guān)鍵字詞注釋1
1.目的1
2.設(shè)計(jì)思想1
3.實(shí)現(xiàn)概要1
4.實(shí)現(xiàn)步驟2
4.1.XML文檔結(jié)構(gòu)定義2
4.2.數(shù)據(jù)表的結(jié)構(gòu)定義4
4.3.構(gòu)造生成XML的servlet4
4.4.構(gòu)造顯示樹(shù)型結(jié)構(gòu)的XSL模版8
4.5.構(gòu)造生成點(diǎn)擊樹(shù)型XMl顯示詳細(xì)節(jié)點(diǎn)內(nèi)容的Servlet12
4.6.Servlet調(diào)用的Session Bean的構(gòu)造13
4.7.Servlet之間的通訊15
5.需要改進(jìn)的地方16
6.附錄16
6.1.Servlet的發(fā)布16
6.2.SessionBean的發(fā)布17
6.3.源碼18
6.3.1.ResultEdit SessionBean源碼和相關(guān)文件18
6.3.2.Servlet源碼23
6.3.3.XSL源碼31

0.關(guān)鍵字詞注釋
 樹(shù)杈和葉子:在樹(shù)型表現(xiàn)中,存在兩種不同的結(jié)構(gòu)的節(jié)點(diǎn),它們所具有的功能也不相同,具有下一級(jí)節(jié)點(diǎn)的節(jié)點(diǎn)稱為樹(shù)杈,沒(méi)有下一級(jí)節(jié)點(diǎn)的節(jié)點(diǎn)稱為葉子
1.目的
為了實(shí)現(xiàn)在不同模塊中進(jìn)行界面元素的權(quán)限管理,需要對(duì)其進(jìn)行樹(shù)型分級(jí),原有的applet構(gòu)造的樹(shù)型顯示因?yàn)轱@示速度和結(jié)構(gòu)方面的因素不被推薦使用,同時(shí)在XML技術(shù)和瀏覽器的強(qiáng)大支持下,用XML及相關(guān)技術(shù)技術(shù)實(shí)現(xiàn)樹(shù)型結(jié)構(gòu)顯示也成為可以同時(shí)滿足速度及結(jié)構(gòu)的要求,在此環(huán)境下,用XML實(shí)現(xiàn)的樹(shù)來(lái)替代applet實(shí)現(xiàn)的樹(shù)是更為優(yōu)秀的方法。
2.設(shè)計(jì)思想
從數(shù)據(jù)庫(kù)的樹(shù)表中提取樹(shù)的相關(guān)參數(shù),生成與數(shù)據(jù)相關(guān)的樹(shù)型結(jié)構(gòu),并以在瀏覽器中以可伸縮的樹(shù)型為表現(xiàn)。通過(guò)在數(shù)據(jù)庫(kù)中插入刪除修改記錄來(lái)控制樹(shù)型的形態(tài)。
3.實(shí)現(xiàn)概要
先從某一終端得到用來(lái)顯示樹(shù)數(shù)據(jù)的數(shù)據(jù)庫(kù)記錄的查詢語(yǔ)句,把查詢的結(jié)果集放入Session Bean的RowSet中,用戶通過(guò)訪問(wèn)servlet,得到由servlet取得Session Bean中的RowSet所得記錄所構(gòu)造的樹(shù),樹(shù)的文檔為XML格式的,XML文檔通過(guò)用XSL構(gòu)造的模版最終由客戶端瀏覽器所顯示,這需要支持XML和XSL的瀏覽器,所以在目前狀況下是與平臺(tái)相關(guān)的。同時(shí)在多個(gè)頁(yè)面?zhèn)鬟fSession Bean是通過(guò)把Session Bean的句柄放入Session中,再在Servlet需要時(shí)通過(guò)調(diào)用Session獲得Session Bean的句柄。
頁(yè)面流程如下:



4.實(shí)現(xiàn)步驟
4.1.XML文檔結(jié)構(gòu)定義
 定義XML文檔的元素和其屬性是相當(dāng)重要的,因?yàn)闃?shù)的層次,節(jié)點(diǎn)的信息和所有需要的都包含在XML定義里,定義好XML元素,同時(shí)也幾乎定義好了數(shù)據(jù)表結(jié)構(gòu)。
從頁(yè)面需求而言,對(duì)于一個(gè)節(jié)點(diǎn),所需要的屬性有,節(jié)點(diǎn)的顯示字符,葉子所具有的超鏈接,frame目標(biāo),對(duì)于構(gòu)成樹(shù)所需要的還有,節(jié)點(diǎn)的序列號(hào),層次,父節(jié)點(diǎn)。所以可以這樣設(shè)置一個(gè)節(jié)點(diǎn):
<!—節(jié)點(diǎn)以<node> 開(kāi)頭,</node>結(jié)束,中間是一個(gè)節(jié)點(diǎn)的屬性-->
<node>
<id>14</id><!—序列號(hào),每一個(gè)節(jié)點(diǎn)的唯一標(biāo)識(shí)-->
<layer>1</layer><!—層次,從第一層為0開(kāi)始,依此類推-->
<name>n14</name>
<value>節(jié)點(diǎn)14</value><!—顯示在頁(yè)面上的字符串-->
<father>6</father><!—當(dāng)前節(jié)點(diǎn)的父節(jié)點(diǎn)id,無(wú)父節(jié)點(diǎn)的節(jié)點(diǎn)該值設(shè)為0-->
<href>http://192.168.0.141</href><!—當(dāng)該節(jié)點(diǎn)為葉子時(shí),該值不為空,值為葉子的鏈接對(duì)象-->
<target>mainFrame</target><!—當(dāng)該節(jié)點(diǎn)為葉子時(shí),該值不為空,值為鏈接的目標(biāo)框架-->
</node>

盡管在節(jié)點(diǎn)的屬性描述中體現(xiàn)出來(lái)了樹(shù)的層次,節(jié)點(diǎn)的父子關(guān)系,但是,因?yàn)槿绶奖銠z索,XSL的模版支持方面的一些原因,需要把樹(shù)的層次以在XML中節(jié)點(diǎn)嵌套的形式體現(xiàn)出來(lái)。如下列代碼顯示出id為14的節(jié)點(diǎn)下還有一個(gè)id為15的葉子和id為16的樹(shù)杈,id為16的樹(shù)杈下面還有id為17的葉子。這是以以嵌套的形式出現(xiàn)的。
<node>
<id>14</id>
<layer>1</layer>
<name>n14</name>
<value>節(jié)點(diǎn)14</value>
<father>6</father>
<href> </href>
<target> </target>
<node>
<id>15</id>
<layer>2</layer>
<name>n15</name>
<value>節(jié)點(diǎn)15</value>
<father>14</father>
<href>http://192.168.0.141</href>
<target>mainFrame</target>
</node>
<node>
<id>16</id>
<layer>2</layer>
<name>n16</name>
<value>節(jié)點(diǎn)16</value>
<father>14</father>
<href></href>
<target></target>
<node>
<id>17</id>
<layer>3</layer>
<name>n17</name>
<value>節(jié)點(diǎn)17</value>
<father>16</father>
<href>http://192.168.0.141</href>
<target>mainFrame</target>
</node>
</node>
</node>
在XML文檔的最外層是由<project>和</project>所構(gòu)成的根。給出該XML參用的DTD:
<!ELEMENT project ( name, node+ ) >
<!ELEMENT order ( #PCDATA ) >
<!ELEMENT name ( #PCDATA ) >
<!ELEMENT layer ( #PCDATA ) >
<!ELEMENT node ( layer+, order+, name+, value+, node* ) >
<!ELEMENT value ( #PCDATA ) >

下圖顯示的是通過(guò)XSL模版最終顯示在瀏覽器上的完全展開(kāi)的樣子,要顯示下圖所示,還需要配置其相應(yīng)的XSL模版。

(圖1)

4.2.數(shù)據(jù)表的結(jié)構(gòu)定義
這里定義的是一個(gè)模型數(shù)據(jù)表,只要任何一個(gè)結(jié)果集可以符合到下表的字段要求,都可以用來(lái)生成XML樹(shù).
在XML文檔結(jié)構(gòu)中定義的節(jié)點(diǎn)的屬性對(duì)應(yīng)的也可以反應(yīng)到數(shù)據(jù)表中,表中所應(yīng)該具有的字段為:
NameTypeSizeNullExplain
Idnumber3no序列號(hào)
Layernumber2no層次
Namevarchar25no名稱
Valuevarchar220no顯示字符
fathernumber3no父節(jié)點(diǎn)id
targetvarchar220yes目標(biāo)框架
Hrefvarchar2100yes鏈接對(duì)象