明輝手游網(wǎng)中心:是一個免費提供流行視頻軟件教程、在線學習分享的學習平臺!

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

[摘要]用Java實現(xiàn)可保存狀態(tài)的數(shù)據(jù)庫生成XML樹目錄0.關(guān)鍵字詞注釋11.目的12.設(shè)計思想13.實現(xiàn)概要14.實現(xiàn)步驟24.1.XML文檔結(jié)構(gòu)定義24.2.數(shù)據(jù)表的結(jié)構(gòu)定義44.3.構(gòu)造生成XML的servlet44.4.構(gòu)造顯示樹型結(jié)構(gòu)的XSL模版84.5.構(gòu)造生成點擊樹型XMl顯示詳細節(jié)點內(nèi)容的...
用Java實現(xiàn)可保存狀態(tài)的數(shù)據(jù)庫生成XML樹
目錄
0.關(guān)鍵字詞注釋1
1.目的1
2.設(shè)計思想1
3.實現(xiàn)概要1
4.實現(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)造顯示樹型結(jié)構(gòu)的XSL模版8
4.5.構(gòu)造生成點擊樹型XMl顯示詳細節(jié)點內(nèi)容的Servlet12
4.6.Servlet調(diào)用的Session Bean的構(gòu)造13
4.7.Servlet之間的通訊15
5.需要改進的地方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)鍵字詞注釋
 樹杈和葉子:在樹型表現(xiàn)中,存在兩種不同的結(jié)構(gòu)的節(jié)點,它們所具有的功能也不相同,具有下一級節(jié)點的節(jié)點稱為樹杈,沒有下一級節(jié)點的節(jié)點稱為葉子
1.目的
為了實現(xiàn)在不同模塊中進行界面元素的權(quán)限管理,需要對其進行樹型分級,原有的applet構(gòu)造的樹型顯示因為顯示速度和結(jié)構(gòu)方面的因素不被推薦使用,同時在XML技術(shù)和瀏覽器的強大支持下,用XML及相關(guān)技術(shù)技術(shù)實現(xiàn)樹型結(jié)構(gòu)顯示也成為可以同時滿足速度及結(jié)構(gòu)的要求,在此環(huán)境下,用XML實現(xiàn)的樹來替代applet實現(xiàn)的樹是更為優(yōu)秀的方法。
2.設(shè)計思想
從數(shù)據(jù)庫的樹表中提取樹的相關(guān)參數(shù),生成與數(shù)據(jù)相關(guān)的樹型結(jié)構(gòu),并以在瀏覽器中以可伸縮的樹型為表現(xiàn)。通過在數(shù)據(jù)庫中插入刪除修改記錄來控制樹型的形態(tài)。
3.實現(xiàn)概要
先從某一終端得到用來顯示樹數(shù)據(jù)的數(shù)據(jù)庫記錄的查詢語句,把查詢的結(jié)果集放入Session Bean的RowSet中,用戶通過訪問servlet,得到由servlet取得Session Bean中的RowSet所得記錄所構(gòu)造的樹,樹的文檔為XML格式的,XML文檔通過用XSL構(gòu)造的模版最終由客戶端瀏覽器所顯示,這需要支持XML和XSL的瀏覽器,所以在目前狀況下是與平臺相關(guān)的。同時在多個頁面?zhèn)鬟fSession Bean是通過把Session Bean的句柄放入Session中,再在Servlet需要時通過調(diào)用Session獲得Session Bean的句柄。
頁面流程如下:



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

盡管在節(jié)點的屬性描述中體現(xiàn)出來了樹的層次,節(jié)點的父子關(guān)系,但是,因為如方便檢索,XSL的模版支持方面的一些原因,需要把樹的層次以在XML中節(jié)點嵌套的形式體現(xiàn)出來。如下列代碼顯示出id為14的節(jié)點下還有一個id為15的葉子和id為16的樹杈,id為16的樹杈下面還有id為17的葉子。這是以以嵌套的形式出現(xiàn)的。
<node>
<id>14</id>
<layer>1</layer>
<name>n14</name>
<value>節(jié)點14</value>
<father>6</father>
<href> </href>
<target> </target>
<node>
<id>15</id>
<layer>2</layer>
<name>n15</name>
<value>節(jié)點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é)點16</value>
<father>14</father>
<href></href>
<target></target>
<node>
<id>17</id>
<layer>3</layer>
<name>n17</name>
<value>節(jié)點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 ) >

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

(圖1)

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