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

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

等級結構數據集在Aspire和Tomcat中的使用

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

  什末是等級化數據集?我們為什末要關注它?
  等級化數據集并不是一個新的概念。 在客戶控制信息系統的事務化數據表單中,目錄的文件中, 以及常用的java對象中都存在著等級化數據集, 同樣的,它也很明顯的存在于xml中。在2001早期的XML 雜志中, 我發表了一個觀點-程序員會受益于等級化數據抽,即使他們的很多數據源是顯著相關的(比如數據庫包括MySQL, Oracle, SQL Server, DB2, 等等。)。
  在.NET世界中有一個相似的觀點來自于“數據集”概念。雖然在我提議的等級化數據集和微軟的數據集有很重要的不同,但是,很顯然,等級化數據集通過豐富的細節化處理增強了相關的抽象提取。
  
  這篇文章描述了Java API使用的分等級的數據集結構。不同于二年前XML 學報參考,您現在將會有可執行的代碼片斷,通過運行它,可以體驗開始利用分等級的數據集。雖然程序員能使用Java編碼來訪問各種各樣的數據源,以及構建最后的分等級的數據集,這篇文章可以通過簡單地組成預構造的關系適配器,讓您很輕易的構建這些分等級的數據集。關系適配器包括文件閱讀器、SQL閱讀器、存儲過程的閱讀器,等等。
  
  您大概會問:"這些分等級的數據集的好處在哪里?",雖然他們目前的作用還不是主導地位的,但是在編程界,等級結構數據集是相當有用的。對于初學者,一個完整的Html頁面所應具有的數據價值可以由一個等級結構數據集來滿足。在一個MVC 模型中,一個servlet 控制器 能提供一個等級制度的數據集給jsp 頁面,這個頁面可以輕松的作它需要做的。 在數據預備方面,它能被轉換成XML 并直接地通過servlet控制器返回到訪問者。在應用方面,等級結構數據集能被轉換成Excel 文檔。在格式方面,等級結構數據集能重定向為一個報告引擎或一個支持XML 數據的繪制圖表的引擎。
  雖然文章的主要焦點是面向Java 程序員的Java 編程API,等級結構數據集能被非Non-Java 程序員相當有效地使用,直接地從關系數據庫和其它數據源,同過使用像Tomcat這樣的J2EE 服務器獲得XML 、HTML ,或Excel 格式。閑言少講,讓我們研究一下等級結構數據集的結構,以及看看這些數據集是怎樣被獲得的(當放松一下您的編程肌肉) 。
  
  等級化數據結構
  一種等級化數據結構能概念性地描述為如同Java API ,或XML ,或某一其它格式。它最輕易形象化地作為XML 。
  <ASPireDataSet>
    <!—一組在根級別的key value 對-->
    <key1>val1</key1> 
    <key2>val2</key2>
  
    <!—一組指定的循環 -->
    <loop name="loop">
    </loop>
    <loop name="loop2">
    </loop>
  </AspireDataSet>
  
  這是一套key/value 對。給出的這套key/value 對能產生n 個獨立的循環。各個循環本質上來說是一個數據表。這里,術語"循環" 與"表?±是同義的。 我沒有使用"表" 是因為人們可能會根據字面意思來只采用表作為從關系表中取出的的唯一數據。被提及是行的集合(RowSet) ,讓我們更加接近地看一下循環的結構:
  
  <loop name="loopname">
    <row>
      <!--一組key value 對-->
      <key1>val1</key1>
      <key2>val2</key2>
  
      <!--一組指定的循環-->
      <loop name="loopname1">
      </loop>
  
      <!--一組指定的循環-->
      <loop name="loopname2">
      </loop>
    </row>
    <row>
    </row>
  </loop>
  
  這里唯一的沒有配對的是列的結構。列是期望的key/value對的集合。這里列不僅包括key/value 對,而且包括另外的一個n個獨立循環的遞歸集。引伸一下可以生成任意數量深度的樹。(或者我應該說,任意的高度!)
  
  Java中的等級化數據結構
  在我用XML顯示等級化數據的時候,有一種可能性,就是人們也許采取一個等級化數據集逐字的訪問XML數據,繼而,逐字地使用DOM,繼而,在JVM 里面消耗很多的內存。不過不必驚慌,等級化數據集有它自己的Java API,從而可以不使用DOM。多數的時候只是向前遍歷加載數據樹。下面是一個使用Java API 處理一個等級化數據集的例子:
  
  package com.ai.htmlgen;
  import com.ai.data.*;
  
  /**
   * 代表了一個等級化數據集。
   * 一個hds 是一個行的集合。
   * 你可以通過ILoopForwardIterator枚舉這些行
   * 你可以通過IMetaData 枚舉各個列。
   * 一個hds 也是一個基于當前行得循環集。
  
   */
  public interface ihds extends ILoopForwardIterator
  {
    /**
     *返回父級接口
     * 假如沒有父級接口則返回NULL
     */
    public ihds getParent() throws DataException;
  
    /**
   * 基于當前行返回一系列的子循環名字。ILoopForwardIteraor 確當前行是什末。
     *
     *
     * @see ILoopForwardIterator
     */
    public IIterator getChildNames() throws DataException;
  
    /**
     * 通過給定的名字返回一個ihds 類型的Java子對象
     */
    public ihds getChild(String childName) throws DataException;
  
    /**
  返回一個列,這跟對一個行集合進行求和,求平均很類似。
       */
    public String getAggregatevalue(String keyname) throws DataException;
  
    /**
  返回這個循環或者表的列名字。
     * @see IMetaData
     */
    public IMetaData getMetaData() throws DataException;
  
    /**
  釋放所有數據或表格循環使用的資源。
     */
    public void close() throws DataException;
  }
  簡而言之,Javaihds 接口描述了“面向等級數據集的接口?!边@個API答應你使用循環遞歸調用。在運行時,有個選項指定只有當他們被要求的時候才加載這些循環。它也能夠假定是僅僅向前還是隨機遍歷。在往下繼續以前, 讓我來介紹兩個另外該API使用的接口:ILoopForwardIterator 和ImetaData。
  如何在HDS中移動遍歷一系列的行:ILoopForwardIterator
  package com.ai.htmlgen;
  import com.ai.data.*;
  
  public interface ILoopForwardIterator
  {
    /**
  * 根據匹配的鑰匙從當前的行中獲取相應的值
    */
    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。Aspire的核心是一套配置文件, 在這些文件中你可以通過Java類術語和這些類的參數聲明數據訪問機制。Aspire 將運行那些Java類并且返回結果對象。等級化數據集并非例外。
  O'Reilly的一篇早期文章介紹了Aspire:"對于Tomcat的開發者來說, Aspire可以作為JAR"它會通過定義數據庫和調用SQL以及存儲過程來讓你熟悉這些運作,就像配置和初始化Aspire一樣。
  為你的等級化數據集創建一個定義文件。
  下面是一個等級化數據集的簡單定義:
  ###################################
  # ihdsTest 數據定義:1區
  ###################################
  request.ihdsTest.className=com.ai.htmlgen.DBHashTableFormHandler1
  request.ihdsTest.loopNames=works
  
  #2區
  request.ihdsTest.works.class_request.className=com.ai.htmlgen.GenericTableHandler6
  request.ihdsTest.works.loopNames=childloop1
  request.ihdsTest.works.query_request.className=com.ai.data.RowFileReader
  request.ihdsTest.works.query_request.filename=aspire://samples
        //pop-table-tags//PRoperties//pop-table.data
  
  #3區
  request.childloop1.class_request.classname=com.ai.htmlgen.GenericTableHandler6
  request.childloop1.query_request.classname=com.ai.data.RowFileReader
  request.childloop1.query_request.filename=aspire://samples//pop-table-tags
        //properties//pop-table.da

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
日韩精品中文字幕在线观看| 久久人人爽人人爽人人片av高请| 久久伊人免费视频| 久久电影一区二区| 国产一区二区黑人欧美xxxx| 8x海外华人永久免费日韩内陆视频| 欧美激情免费视频| 亚洲国产精品久久久久久| 欧美精品18videosex性欧美| 国模精品视频一区二区三区| 2019日本中文字幕| 国产日韩av在线播放| 亚洲国产99精品国自产| 成人激情综合网| 中文字幕日韩av电影| 国产精品第3页| 中文字幕精品网| 在线日韩精品视频| 国产午夜一区二区| 久久久成人av| 大胆人体色综合| 最新的欧美黄色| 久久九九全国免费精品观看| 久久免费视频在线| 国产亚洲福利一区| 国产成人免费91av在线| 超碰97人人做人人爱少妇| 国产a级全部精品| 欧美性猛交xxxxx免费看| 欧美激情精品久久久久久大尺度| 欧美特黄级在线| 日韩动漫免费观看电视剧高清| 国产精品久久久久久久久久新婚| 欧美亚洲在线播放| 福利二区91精品bt7086| 国内精品久久久久久| 久久久免费高清电视剧观看| 亚洲精品suv精品一区二区| 日韩a**站在线观看| 日本19禁啪啪免费观看www| 91麻豆国产语对白在线观看| 在线观看中文字幕亚洲| 欧美伊久线香蕉线新在线| 日韩高清av在线| 欧美成人精品在线观看| 国产不卡视频在线| 亚洲国产精品国自产拍av秋霞| www.日韩系列| 国产精品丝袜久久久久久不卡| 一本久久综合亚洲鲁鲁| 亚洲xxxx3d| 成人a在线视频| 国产精品69久久| 上原亚衣av一区二区三区| 亚洲人成电影网站| 亚洲性夜色噜噜噜7777| 亚洲激情在线观看| 欧美午夜视频在线观看| 国产69久久精品成人| 欧美亚洲成人免费| 亚洲综合一区二区不卡| 日韩在线免费视频| 日韩精品一区二区三区第95| 国产成一区二区| 精品免费在线视频| 久久成人这里只有精品| 欧美日韩美女在线观看| 久久亚洲综合国产精品99麻豆精品福利| 国产丝袜一区二区三区免费视频| 4p变态网欧美系列| 久久夜色精品国产| 97国产精品视频| 国产成人涩涩涩视频在线观看| 2019中文字幕在线观看| 亚洲精品理论电影| 亚洲精品动漫久久久久| 亚洲人成网7777777国产| 欧洲精品在线视频| 丝袜亚洲另类欧美重口| 久久亚洲一区二区三区四区五区高| 欧美性理论片在线观看片免费| 亚洲xxxx在线| 国产精品一区=区| 中文字幕精品一区二区精品| 欧美亚洲第一区| 日韩成人网免费视频| 日韩一区二区久久久| 5566日本婷婷色中文字幕97| 欧美性在线观看| 性色av香蕉一区二区| 久久久精品一区二区三区| 日韩电影在线观看中文字幕| 亚洲资源在线看| 日韩美女av在线免费观看| 在线视频免费一区二区| 成人免费淫片aa视频免费| 国产精品久久久久福利| 狠狠久久亚洲欧美专区| 亚洲综合日韩在线| 亚洲欧洲第一视频| 国产69精品久久久久99| 欧美中文字幕在线观看| 国产精品∨欧美精品v日韩精品| 国产精品久久国产精品99gif| 国产精品久久久久久久久借妻| 亚洲第一页在线| 亚洲欧美中文字幕在线一区| 亚洲欧美日韩一区二区在线| 亚洲美女免费精品视频在线观看| 亚洲国产精品一区二区三区| 北条麻妃一区二区在线观看| 国产精品精品一区二区三区午夜版| 欧美成人免费网| 精品国产一区二区三区在线观看| 国产精品96久久久久久又黄又硬| 海角国产乱辈乱精品视频| 色综合男人天堂| 日韩成人在线网站| 激情成人中文字幕| 国产精品自拍小视频| 黑人精品xxx一区| 日韩av影院在线观看| 国产日本欧美一区二区三区在线| 久久精品99无色码中文字幕| 国产成人午夜视频网址| 久久久999国产| 国产欧美日韩精品在线观看| 久久人人爽人人爽爽久久| 国产精品一区久久久| 精品久久久一区二区| 日韩国产一区三区| 成人国产精品av| 欧美激情久久久久| 国产精品偷伦视频免费观看国产| 欧美一级淫片videoshd| 欧美福利在线观看| 久久精品99久久香蕉国产色戒| 成人av在线天堂| 国产精品扒开腿做爽爽爽男男| 国产精品欧美日韩| 在线亚洲国产精品网| 欧美日韩国产丝袜美女| 成人黄色免费在线观看| 亚洲国产毛片完整版| 色妞久久福利网| 国产欧美精品xxxx另类| 欧美乱大交做爰xxxⅹ性3| 91成人免费观看网站| 欧美日韩福利在线观看| 亚洲美女又黄又爽在线观看| 国产精品高潮粉嫩av| 亚洲最大av在线| 欧美电影电视剧在线观看| 日韩免费av一区二区| 欧美日韩美女视频| 国产大片精品免费永久看nba| 国产亚洲一区二区精品| 清纯唯美亚洲激情| 久久久久久久国产| 两个人的视频www国产精品| 国产精品极品美女粉嫩高清在线| 亚洲成人精品视频在线观看| 亚洲一区二区三区在线视频| 成人黄色av免费在线观看|