用Java實現可保存狀態的數據庫生成XML樹(1)-基于weblogic,包括一些基礎問題,非常詳細的。

發表于:2007-07-01來源:作者:點擊數: 標簽:
用 Java 實現可保存狀態的 數據庫 生成XML樹 目錄 0.關鍵字詞注釋1 1.目的1 2.設計思想1 3.實現概要1 4.實現步驟2 4.1.XML文檔結構定義2 4.2.數據表的結構定義4 4.3.構造生成XML的servlet4 4.4.構造顯示樹型結構的XSL模版8 4.5.構造生成點擊樹型XMl顯示詳細節
Java實現可保存狀態的數據庫生成XML樹
目錄  
0.    關鍵字詞注釋    1
1.    目的    1
2.    設計思想    1
3.    實現概要    1
4.    實現步驟    2
4.1.XML文檔結構定義    2
4.2.數據表的結構定義    4
4.3.構造生成XML的servlet    4
4.4.構造顯示樹型結構的XSL模版    8
4.5.構造生成點擊樹型XMl顯示詳細節點內容的Servlet    12
4.6.Servlet調用的Session Bean的構造    13
4.7.Servlet之間的通訊    15
5.    需要改進的地方    16
6.    附錄    16
6.1.Servlet的發布    16
6.2.SessionBean的發布    17
6.3.源碼    18
6.3.1.ResultEdit SessionBean源碼和相關文件    18
6.3.2.Servlet源碼    23
6.3.3.XSL源碼    31

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



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

盡管在節點的屬性描述中體現出來了樹的層次,節點的父子關系,但是,因為如方便檢索,XSL的模版支持方面的一些原因,需要把樹的層次以在XML中節點嵌套的形式體現出來。如下列代碼顯示出id為14的節點下還有一個id為15的葉子和id為16的樹杈,id為16的樹杈下面還有id為17的葉子。這是以以嵌套的形式出現的。
<node>
<id>14</id>
<layer>1</layer>
<name>n14</name>
<value>節點14</value>
<father>6</father>
<href> </href>
<target> </target>
<node>
<id>15</id>
<layer>2</layer>
<name>n15</name>
<value>節點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>節點16</value>
<father>14</father>
<href></href>
<target></target>
<node>
<id>17</id>
<layer>3</layer>
<name>n17</name>
<value>節點17</value>
<father>16</father>
<href>http://192.168.0.141</href>
<target>mainFrame</target>
</node>
</node>
</node>
在XML文檔的最外層是由<project>和</project>所構成的根。給出該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模版最終顯示在瀏覽器上的完全展開的樣子,要顯示下圖所示,還需要配置其相應的XSL模版。

(圖1)

4.2.數據表的結構定義
這里定義的是一個模型數據表,只要任何一個結果集可以符合到下表的字段要求,都可以用來生成XML樹.
在XML文檔結構中定義的節點的屬性對應的也可以反應到數據表中,表中所應該具有的字段為:
Name    Type    Size    Null    Explain
Id    number    3    no    序列號
Layer    number    2    no    層次
Name    varchar2    5    no    名稱
Value    varchar2    20    no    顯示字符
father    number    3    no    父節點id
target    varchar2    20    yes    目標框架
Href    varchar2    100    yes    鏈接對象

原文轉自:http://www.anti-gravitydesign.com

国产97人人超碰caoprom_尤物国产在线一区手机播放_精品国产一区二区三_色天使久久综合给合久久97