亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

通過Aspire和Tomcat使用層次數據集

2019-11-18 13:07:22
字體:
來源:轉載
供稿:網友

  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 腳本, 存儲過程等等。
  
  現在你可能會問了:“這個層次數據集究竟有什么好啊?”。當然層次數據集是不能和你的那些受到獎賞的同事得到的昂貴的Carbon帶來的實惠相抗衡,在編程中層次數據集是非常有用的。對一個啟動來說,一個層次數據集就可以滿足整個Html頁面上的所有的有價值的數據的需要。在MVC(Model-View-Controler)模型里,控制器的servlet可以提交一個層次數據集給jsp頁面后,JSP頁面就可以顯示它而不需要任何的幫助。也可以說,通過控制器的servlet可直接將其轉換為XML格式返回給請求者。從實用的角度來說,數據集可以轉換成Excel格式的文件。從新潮的角度來說,層次數據集可以轉換為支持XML數據的報表或者圖表。
  
  本篇主要焦點是服務于Java程序員的Java編程的API怎么運用層次數據集,實際上非Java程序員也可以通過有效地結合層次數據集和一個J2EE的服務(比如Tomcat)從關系型數據庫或者別的數據庫中得到XML、HTML、或者Excel格式文檔。不要過于急躁,我們先來研究研究層次數據集的結構和這些數據集是如何被提取的(現在可以稍微放松一下啦^_^)。
  
  二. 層次數據集的結構
  層次數據集可以表示為一個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">
      </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
   * 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.
     */
    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);
    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類并返回期待的結果對象.層次數據集是沒有異常的.
  
  一個早期的標志性的對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

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲最大在线视频| 日韩av综合网站| 国产午夜精品视频免费不卡69堂| 亚洲成在人线av| 国产精品一区二区av影院萌芽| 91免费的视频在线播放| 亚洲毛片在线观看.| 国产精品草莓在线免费观看| 自拍偷拍亚洲在线| 九九九久久久久久| 一区二区在线视频播放| 国产不卡av在线免费观看| 欧美福利小视频| 成人在线观看视频网站| 亚洲国产91色在线| 91影院在线免费观看视频| 中日韩美女免费视频网站在线观看| 精品国产乱码久久久久久婷婷| 久久久久久久久综合| 91系列在线播放| 国产日韩换脸av一区在线观看| 欧美视频在线观看 亚洲欧| 久久精品一区中文字幕| 国产亚洲人成网站在线观看| 日韩精品视频中文在线观看| 自拍偷拍亚洲在线| 日韩免费av一区二区| 日韩视频免费看| 亚洲自拍小视频免费观看| 亚洲欧洲一区二区三区在线观看| 亚洲国产99精品国自产| 欧美日韩日本国产| 国产精品v日韩精品| 亚洲精品美女网站| 久久成人18免费网站| 久久久中文字幕| 清纯唯美亚洲激情| 亚洲色图日韩av| 555www成人网| 日韩av三级在线观看| 亚洲永久免费观看| 精品国产91久久久久久老师| 午夜精品在线观看| 久久精品国产96久久久香蕉| 亚洲精品美女网站| 久久99热精品| 97国产在线视频| 这里只有精品在线播放| 亚洲一区二区三区sesese| 琪琪亚洲精品午夜在线| 色综合久久悠悠| 亚洲成年网站在线观看| 国产精品aaaa| 国产午夜精品免费一区二区三区| 久久久久久久色| 国产91精品网站| 尤物99国产成人精品视频| 成人av在线天堂| 成人性生交大片免费观看嘿嘿视频| 自拍视频国产精品| 亚洲欧美日韩一区二区三区在线| 中文字幕久久亚洲| 66m—66摸成人免费视频| 欧美日韩在线观看视频| 中文字幕亚洲一区| 欧美激情精品久久久久久久变态| 在线观看欧美日韩国产| 国产欧美日韩中文字幕| 狠狠做深爱婷婷久久综合一区| 亚洲丁香久久久| 欧美日韩亚洲一区二区| 亚洲日本中文字幕| 57pao国产精品一区| 国产成人综合亚洲| 美女少妇精品视频| 国产91在线播放精品91| 91国产在线精品| 日韩av在线网站| 高跟丝袜欧美一区| 欧美精品在线播放| 成人国内精品久久久久一区| 色综合天天狠天天透天天伊人| 亚洲加勒比久久88色综合| 海角国产乱辈乱精品视频| 亚洲电影免费在线观看| 欧美在线视频免费观看| 久久成人亚洲精品| 九九久久精品一区| 亚洲欧美综合图区| 亚洲精品97久久| 91精品久久久久久综合乱菊| 国产香蕉一区二区三区在线视频| 亚洲天堂成人在线视频| 精品久久久久久久久国产字幕| 国产精品成人观看视频国产奇米| 欧美劲爆第一页| 国产精品成人va在线观看| 欧美激情精品久久久久久大尺度| 日韩欧美在线免费观看| 日韩在线中文字幕| 久久久www成人免费精品张筱雨| 色偷偷9999www| 不卡中文字幕av| 欧美大片欧美激情性色a∨久久| 国产91精品久久久| 精品自拍视频在线观看| 91久久精品日日躁夜夜躁国产| 国产成人一区二区在线| 久久久精品国产亚洲| 日韩女优人人人人射在线视频| 亚洲成人激情图| 日本亚洲欧洲色| 中文字幕亚洲一区二区三区五十路| 亚洲va久久久噜噜噜久久天堂| 亚洲国产精品久久久久| 色阁综合伊人av| 久久久999国产| 亚洲欧美三级在线| 日韩免费精品视频| 国产精品爽黄69天堂a| 96精品视频在线| 亚洲а∨天堂久久精品9966| 国产一区二区在线免费视频| 色视频www在线播放国产成人| 国产在线播放91| 亚洲iv一区二区三区| 欧美性猛交99久久久久99按摩| 午夜精品99久久免费| 日韩视频免费中文字幕| 久久中文字幕一区| 亚洲偷熟乱区亚洲香蕉av| 成人黄色生活片| 亚洲人成自拍网站| 亚洲成av人片在线观看香蕉| 色综合视频一区中文字幕| 97色在线播放视频| 国产精品久久久久久影视| 日本高清久久天堂| 日本韩国欧美精品大片卡二| 日韩精品亚洲元码| 色悠久久久久综合先锋影音下载| 成人免费观看49www在线观看| 欧美日韩性生活视频| 在线观看中文字幕亚洲| 国产精品男女猛烈高潮激情| 亚洲成人久久久久| 久久久噜久噜久久综合| 中文字幕亚洲一区二区三区五十路| 国外成人性视频| 欧美日韩国产第一页| 日本19禁啪啪免费观看www| 成人写真视频福利网| 久久国产精品久久久久| 亚洲国产精品va在看黑人| 日韩在线观看网站| 国产亚洲美女久久| 日韩精品在线观看一区二区| 亚洲精品国产精品国自产在线| 91伊人影院在线播放| 欧美性猛交xxxx久久久| 国产精品久久久久福利| 国产精品99久久久久久久久久久久| 欧美日韩国产区| 一区国产精品视频|