网管联盟 | 网管论坛 | 网管u家 | 网管博客 | 网管软件 | 网管求职 | 小游戏 | 网管搜索 | 网管原创 | 网管聚合 | 网管读摘 | 网管焦点 | 世界素材 | 会员投稿 | 会员中心 
中国网管联盟
Windows Linux Cisco 网络技术 数据库 黑客攻防 DotNet Java PHP 认证 新闻资讯 服务器 存储资讯 网络设备 网管学堂 技术专题 焦点 网吧频道
 当前位置: > bitsCN.com > JAVA > 开源技术 > Tomcat > 通过Aspire和Tomcat使用层次数据集  

通过Aspire和Tomcat使用层次数据集

2004-06-03  作者:BitsCN整理  来源:中国网管联盟  点评 投稿 收藏


  Aspire是一个RAD工具,提供使用者以标准的XML/XSL、J2EE及关联式资料库技术快速地创建网站。Aspire可接受的资料来源包含存储程序、SQL语句、EJBs及Java控件,并使用Apache 的xerces/xalan作为转换的处理器。
  
  Aspire可使用于多种servlet引擎,例如Apache/JServ、Apache/Tomcat及WebSphere等。
  
  目前发展中的功能包含Crystal reports及Oracle reports等报表工具的整合界面。 Aspire优点如下:
  
  一.何为层次数据集?为什么要用层次数据集?
  层次数据集并不是一个新的名词。他们已经以客户信息控制系统的事务数据、目录文件、Java对象、更接近于XML文件的格式存在了。早在2001年的XML杂志上,我就认为程序员可以从层次数据集的提取上得到好处,尽管他们的数据源具有很强的数据相关性(像:MySQL, Oracle, SQL Server, DB2等等之类的数据库)。.NET思想和数据集概念也很相似。尽管我所认为的层次数据集和传统的微软的数据集有很大的不同,层次数据集具有的丰富的细节描述极大增强了关系型数据的提取。
  
  本篇重在讲述层次数据集的结构和与其相关的Java API。并不像XML杂志两年前所说的,你现在就可以用一系列的可执行代码来获取层次数据集的优势。当然我们可以在Java里编写一定代码来实现对各种各样的数据源的访问以及创建一个完整的层次数据集,本篇中我们就将给出一可执行的代码,你可以利用这些代码并结合一个简单的预定义的关系型适配器就可以创建一些层次数据集啦。这里的关系型适配器包括:文本阅读器,SQL 脚本, 存储过程等等。 中国网管论坛bbs.bitsCN.com
  
  现在你可能会问了:“这个层次数据集究竟有什么好啊?”。当然层次数据集是不能和你的那些受到奖赏的同事得到的昂贵的Carbon带来的实惠相抗衡,在编程中层次数据集是非常有用的。对一个启动来说,一个层次数据集就可以满足整个HTML页面上的所有的有价值的数据的需要。在MVC(Model-View-Controler)模型里,控制器的servlet可以提交一个层次数据集给JSP页面后,JSP页面就可以显示它而不需要任何的帮助。也可以说,通过控制器的servlet可直接将其转换为XML格式返回给请求者。从实用的角度来说,数据集可以转换成Excel格式的文件。从新潮的角度来说,层次数据集可以转换为支持XML数据的报表或者图表。
  
  本篇主要焦点是服务于Java程序员的Java编程的API怎么运用层次数据集,实际上非Java程序员也可以通过有效地结合层次数据集和一个J2EE的服务(比如Tomcat)从关系型数据库或者别的数据库中得到XML、HTML、或者Excel格式文档。不要过于急躁,我们先来研究研究层次数据集的结构和这些数据集是如何被提取的(现在可以稍微放松一下啦^_^)。
  

网管论坛bbs_bitsCN_com


  二. 层次数据集的结构
  层次数据集可以表示为一个JavaAPI ,XML或者别的格式,而用XML来表示将会更加形象:
  <AspireDataSet>
    <!-- A set of key value pairs at the root level -->
    <key1>val1</key1>
    <key2>val2</key2>
    <!-- A set of named loops -->
    <loop name=\"loop\">
    </loop>
    <loop name=\"loop2\">
    </loop>
  </AspireDataSet>
  
  这是一系列的key/value对.一个给定的key/value可以用在N个独立的loops当中.其实每一个loop 就是一个数据表.loop可以说是table的同义词了.我没有用table这个术语是为了防止人们会不由自主的联想到关系型数据表.已经说过了loop其实上是很多行记录的集合,现在让我们在认真的看loop的结构:
  <loop name=\"loopname\">
    <row>
      <!-- a set of key value pairs -->
      <key1>val1</key1>
      <key2>val2</key2>
      <!-- a set of named loops -->
      <loop name=\"loopname1\"> 网管下载dl.bitscn.com
      </loop>
      <!-- a set of named loops -->
      <loop name=\"loopname2\">
      </loop>
    </row>
    <row>
    </row>
  </loop>
  
  这里唯一一个不成对的结构就是row结构了.一个row结构可以是一些key/value对的集合.这里的row不仅包含了一些key/value对,并且还包括了多个独立的loop结构的递归集.这种扩展可以生成一定深度的树结构.
  
  三.Java当中的层次数据的结构
  当我把层次数据集以XML的形式展示的时候,你可能会把层次数据集理解为字面上的XML,因此你会先到DOM,接着你甚至会想这样岂不是会占用很大的JVM内存.不必慌张.层次数据集有自己的的Java API二不需要DOM来描述.下面就是一个层次数据集的Java API代码:
  package com.ai.htmlgen;
  import com.ai.data.*;
  /**
   * Represents a Hierarchical Data Set.
   * An hds is a collection of rows.
   * You can step through the rows using ILoopForwardIterator
网管网www.bitscn.com

   * You can find out about the columns via IMetaData.
   * An hds is also a collection loops originated using the current row.
   */
  public interface ihds extends ILoopForwardIterator
  {
    /**
     * Returns the parent if available
     * Returns null if there is no parent
     */
    public ihds getParent() throws DataException;
    /**
     * For the current row return a set of
     * child loop names. ILoopForwardIteraor determines
     * what the current row is.   *
     * @see ILoopForwardIterator
     */
    public IIterator getChildNames() throws DataException;
    /**
     * Given a child name return the child Java object
     * represented by ihds again
     */
    public ihds getChild(String childName) throws DataException;
    /**
     * returns a column that is similar to SUM, AVG etc of a
     * set of rows that are children to this row. 网管网www.bitscn.com
     */
    public String getAggregatevalue(String keyname) throws DataException;
    /**
     * Returns the column names of this loop or table.
     * @see IMetaData
     */
    public IMetaData getMetaData() throws DataException;
    /**
     * Releases any resources that may be held by this loop of data
     * or table.
     */
    public void close() throws DataException;
  }
  
  简单的说来,上面的ihds接口就是一个层次数据集的接口.这个API使你可以递归的访问你的loop结构.这个接口里有一些遍历loop结构是需要的一些选项.它也能假定是前序遍历或者随机遍历.现在我来介绍的是这个API用到的两个附加的接口: ILoopForwardIterator和IMetaData:
  如何在IHDS里遍历行记录的接口: ILoopForwardIterator
  package com.ai.htmlgen;
  import com.ai.data.*;
  public interface ILoopForwardIterator
  {
    /**
    * getvalue from the current row matching the key
    */
    public String getvalue(final String key); 网管u家u.bitsCN.com
    public void moveToFirst() throws DataException;
    public void moveToNext() throws DataException;
    public boolean isAtTheEnd() throws DataException;
  }
  
  IMetaData: 用于读取列名的接口
  package com.ai.data;
  public interface IMetaData
  {
   public IIterator getIterator();
   public int    getColumnCount();
   public int    getIndex(final String attributeName)
   throws FieldNameNotFoundException;
  }
  
  你是怎么得到层次数据集的?你又可以怎么去用他?
  现在我们已经知道了层次数据集的结构了,你又怎么去利用它呢?像我以前所说的,这些再Aspire下是非常容易的.具体的步骤如下:
  1. 学习Aspire的基础知识
  2. 为你的层次数据集创建定义文件
  3. 在Java 代码里调用你的定义和ihds接口
  
  下面具体介绍了这里面的细节:
  阅读Aspire JAR的基础的使用方法:
  Aspire是一个很小的jar文件,当你用像Tomcat这样的app服务器的时候,它是你的Java程序的一个补充.再Aspire的核心是一系列的配置文件,在这些文件里你可以声明你的根据Java类的数据访问机制和这些Java类的评论.Aspire将执行这些Java类并返回期待的结果对象.层次数据集是没有异常的. 网管u家u.bitsCN.com
  
  一个早期的标志性的对Aspire的评论参见:“ For Tomcat Developers, Aspire Comes in a JAR”.配置了初始化一个Aspire就像你定义数据库.调用SQL语句或者存储过程一样.
  为你的层次数据集创建定义文件:
  一个层次数据集的定义实例:
  ###################################
  # ihdsTest data definition: section1
  ###################################
  request.ihdsTest.className=com.ai.htmlgen.DBHashTableFormHandler1
  request.ihdsTest.loopNames=works
  #section2
  request.ihdsTest.works.class_request.className=com.ai.htmlgen.GenericTableHandler6
  r

TAGs层次   数据   通过   结构   Java   XML   Aspire    
 上一篇:TOMCAT 3.1的安装与配置简要介绍   下一篇:在 tomcat 5 中配置数据库连接池(DBCP)
相关文章列表
通过Aspire和Tomcat使用层次数据集 评论:
loading.. 评论加载中…
评论:请自觉遵守互联网相关政策法规,评论不得超过250字。

验证码: 注册用户
本类热门排行:
1.一个相当经典的RMI实例源代码及详细说明
2.Tomcat5.5下的Jndi的配置实例
3.开源技术基础:TOMCAT的用法
4.开源技术之Tomcat数据源配置总结
5.Log4J 日志管理系统使用心得体会
6.James安装使用简易指南
7.Web App用Quartz实现java schedule job
8.开源技术:tomcat5.0下配置ssl
9.tomcat向weblogic移植的中文乱码问题
10.实例讲解配置之——TOMCAT集群配置
最新推荐文章:
1.Tomcat的配置技巧精华详解
2.解决AIX配置tomcat https出现的问题
3.名词解释 什么是Tomcat?
4.开源技术基础:TOMCAT的用法
5.Log4J 日志管理系统使用心得体会
6.一个相当经典的RMI实例源代码及详细说明
7.TOMCAT 3.1的安装与配置简要介绍
8.通过Aspire和Tomcat使用层次数据集
9.JAVA代码编写的建议30条
10.James安装使用简易指南
网管论坛交流:
·不疯魔不成活
·令你大开眼界的真正标准化机房,已整理重
·为赈灾,女孩舍身拍“裸照”
·Windows Server 2003服务器群集创建和配
·exchange2k3全套官方资料
·双儿一周岁了。。。特殊的礼物来啦。。
·存储备份技术版块守则
·无盘技术交流区守则
·DOS命令基础大全之命令详解<作者吐血
·Windows XP 操作系统默认设置需要注意的