用Java实现可保存状态的数据库生成XML树(1)-基于weblogic,包括一些基础问题,非常详细的。

web|xml|生成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    链接对象

时间: 2024-10-29 21:53:46

用Java实现可保存状态的数据库生成XML树(1)-基于weblogic,包括一些基础问题,非常详细的。的相关文章

用Java实现可保存状态的数据库生成XML树(2)

xml|生成xml|数据|数据库 4.3.构造生成XML的servlet这一步的主要实现是从数据表中提取符合要求的记录生成嵌套的XML,servlet的源码是XMLServlet.java,选用oracle作数据库服务器.对数据库记录处理的过程基本上类似于XSL模版的处理:先查找layer的值为0的记录,对该记录进行分析,分析是否具有下级节点,这是通过该记录的href是否为空来进行分支处理的,href为空时,通过id的输入参数进行递归查找,请参见XMLServlet.java源码. /*RowS

用Java实现可保存状态的数据库生成XML树(3)

xml|生成xml|数据|数据库 4.4.构造显示树型结构的XSL模版在上面的demotree.xml,是不能单独显示出如图一一样的树结构的,需要把XML文件用XSL模版来转换. 在这里实际上需要把XML文档用模版格式为以下样式:<ul>  <li></li>  <li></li>    <ul>      <li></li>     <li></li></ul></u

用Java实现可保存状态的数据库生成XML树,源码来了(11)

xml|生成xml|数据|数据库 3. XMLTreeXSL.javapackage com.sitechasia; import javax.servlet.*;import javax.servlet.http.*; import java.io.PrintWriter;import java.io.IOException; public class XMLTreeXSL extends HttpServlet {    PrintWriter out;    boolean flag=tr

用Java实现可保存状态的数据库生成XML树,最后一个源码(12),新手高手都看看吧,也不枉我一片苦心啊!

xml|生成xml|数据|数据库 6.3.3.XSL源码1.treefunc.xsl<?xml version="1.0" encoding="gb2312" ?><xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl"><xsl:template match="/"><html><head><style&g

用Java实现可保存状态的数据库生成XML树,源码来了(10)

2.XMLServlet.javapackage com.sitechasia;import javax.servlet.*;import javax.servlet.http.*;import java.io.PrintWriter;import java.io.IOException;import javax.sql.RowSet;import com.sitechasia.ejb.*;import javax.ejb.Handle;public class XMLServlet exten

根据数据库生成xml二法

xml|生成xml|数据|数据库 conn.ConnectionString = "Server=127.0.0.1;User ID=sa;Password=fdahgdrethj31313210212121;Database=northwind;Persist Security Info=True";      conn.Open();      SqlDataAdapter da = new SqlDataAdapter("select * from 表", c

java 如何保存、读取数据库字段为blob类型的值

问题描述 java 如何保存.读取数据库字段为blob类型的值 java 如何保存.读取javaBean中定义String类型,oracle数据库字段为blob类型的值 这是我的业务逻辑代码 try { String encoding = "GBK"; File file = new File("E:workspaceNeuSoft omcat7.0.40logslocalhost.2015-12-07.log"); if (file.isFile() &&

Android开发入门(七)处理变化 7.2 保存状态等信息

目前为止,我们已经了解到了,当改变屏幕方向的时候,activity将会被销毁,随后被重建.请记住一点 ,当activity被重建之后,它的当前信息可能消失.当一个activity被kill掉,将会调以下方法中的一个或 着两个: onPause() -- 当一个activity被kill掉或被转入后台的时候,这个方法总是被调用. onSaveInstanceState() -- 当一个activity将被kill掉或转入后台的时候,这个方法也会被掉用,就 像onPause()方法一样.但是,当一个

Java操作Mongodb 保存/读取java对象到/从mongodb

Mongodb官方提供的Java驱动,保存与读取,需要的者是DBObject对象,这是一个接口,实现put,get等方法,跟map类似,如果我们要直接把普通的java对象保存到mongodb,就需要先转换成DBObject对象,或者直接实现DBObject接口,操作起来相当复杂.还好,monodb驱动带了把json转换成DBObject对象的功能,加上Google的Gson,就可以实现把普通的对象保存到mongodb中.如果要从mogodb中读出对象,反过来操作即可,但有一点需要注意的是,mon