<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Terry.Li-彬

    虛其心,可解天下之問;專其心,可治天下之學(xué);靜其心,可悟天下之理;恒其心,可成天下之業(yè)。

      BlogJava :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
      143 隨筆 :: 344 文章 :: 130 評(píng)論 :: 0 Trackbacks
    著名的Open Source論壇Jive有很多東西值得我們分析和學(xué)習(xí),通過分析其Jdom的使用機(jī)制,我們可以自如方便的讀寫XML配置文件,從而實(shí)現(xiàn)下列一些功能:
      
      在配置文件中設(shè)置系統(tǒng)語(yǔ)言版本屬性,不同語(yǔ)言版本,系統(tǒng)界面文字不一樣,可以定義自己國(guó)家的文字,比如英文版中文簡(jiǎn)體版。這樣,可以很方便的將一個(gè)系統(tǒng)延伸到各種語(yǔ)言,不用直接修改程序,只要修改XML配置文件就可以。
      
      在配置文件中設(shè)置郵件內(nèi)容,通常一個(gè)系統(tǒng)都有各種自動(dòng)郵件分發(fā),比如用戶注冊(cè)成功后,會(huì)有一封Email發(fā)送到他的信箱,這套系統(tǒng)安裝在不同客戶場(chǎng)合,Email的內(nèi)容當(dāng)然不一樣,如A客戶使用了這套系統(tǒng),當(dāng)然希望在Email中有A客戶的單位名稱,這些都不必修改程序可以完成。
      
      設(shè)置系統(tǒng)的可選屬性,一個(gè)系統(tǒng)安裝在不同客戶場(chǎng)合中,客戶的要求總有些不一樣,有些功能是可選的,那么當(dāng)然這些都要設(shè)置在XML配置文件中。
      
      使用XML存放樹形結(jié)構(gòu)記錄是最方便的,尤其對(duì)于那些目錄分類系統(tǒng),如Yahoo,在大分類中有小分類,或者直接是元素我們知道關(guān)系數(shù)據(jù)庫(kù)是不擅長(zhǎng)存放樹形數(shù)據(jù),在關(guān)系數(shù)據(jù)庫(kù)中,典型做法是采取兩個(gè)表:一個(gè)表記錄每個(gè)cell;一個(gè)表指明其前后關(guān)系;但是我們一旦要從這兩張表展開樹形結(jié)構(gòu),將要在空間和時(shí)間上反復(fù)平衡。
      
      如果使用XML作為數(shù)據(jù)源,就很方便解決這個(gè)問題,如果配合對(duì)XML數(shù)據(jù)源有很方便的增、修、等功能,那么我們當(dāng)然選擇XML,實(shí)際上,Jdom就方便地提供了這個(gè)工具.Jdom是類似DOM SAX之類的XML解析辦法,只適合Java語(yǔ)言,Jdom的特點(diǎn)就是簡(jiǎn)單方便。
      
      那么,讓我們來(lái)看看Jive是怎么實(shí)現(xiàn)上面功能的吧,它是把這些屬性都寫在一個(gè)叫jive_config.xml的文件中。這個(gè)XML文件的排列方式和使用方式是這樣:
      
      XML文件內(nèi)容格式:
      
      <!-- root element, all properties must be under this element -->
      <jive>
      <email>
      <fromName>Jive_Administrator</fromName>
      <fromEmail>webmaster@example.com</fromEmail>
      <subject>Your thread was updated!</subject>
      <body>Hello {name}! The thread {threadName} was updated!</body>
      </email>
      <jive>
      
      其中:
      
      <jive></jive>
      
      是根元素,所有的屬性必須在其中。使用方式也比較簡(jiǎn)單,使用標(biāo)點(diǎn)符號(hào)“.”來(lái)間隔。比如我們要得到上面的webmaster@example.com的值,那么使用email.fromEmail就可以。在Jive中,具體語(yǔ)句就是JiveGlobals.getJiveProperty("email.fromEmail");這樣獲取值很簡(jiǎn)單,而且明了,無(wú)論XML樹形結(jié)構(gòu)有多深,我們都可以方便的獲取。
      
      這里關(guān)鍵的是一個(gè)使用Jdom來(lái)解析XML文件的類:XMLProperties ,其中實(shí)現(xiàn)了幾個(gè)主要操作方法:
      
      獲得(查詢):getProperty(name) ;
      
      新增修改:properties.setProperty(name, value);
      
      刪除:properties.deleteProperty(name) ;
      
      這幾個(gè)方法是不是很類似Hasntable的方法?Hashtable中數(shù)據(jù)是存放在內(nèi)存中,而XML是存放在文件系統(tǒng),無(wú)疑我們可以象使用hashtable一樣方便的使用XML。
      
      XMLProperties我們可以原封不動(dòng)的拷貝到我們系統(tǒng)中。唯一要做的就是編制類似Jive的JiveGlobals,其實(shí)這也很簡(jiǎn)單,分兩步:先load取出XML文件;然后就提供getProperty(name)等方法。如
      
      public class JiveGlobals {
      private static final String JIVE_CONFIG_FILENAME = "jive_config.xml";
      ....
      
      public static String getJiveProperty(String name) {
      loadProperties();
      return properties.getProperty(name);
      }
      ....
      
      private synchronized static void loadProperties() {
      if (properties == null) {
      //Create a manager with the full path to the xml config file.
      properties = new XMLProperties(jiveHome + File.separator +
      JIVE_CONFIG_FILENAME);
      }
      }
      }
      
      當(dāng)然,所有這些前提,是到http://www.jdom.org下載Jdom包,并加入到Tomcat的common/lib中,或者放入Classpath中。
      
      其他輔助文件有:DataFormatFilter.java DataUnformatFilter.java XMLFilterBase.java。如果你對(duì)Jdom具體每一句是如何使用的,可以仔細(xì)研究XMLProperties,很容易理解的.
    posted on 2007-09-11 10:11 禮物 閱讀(217) 評(píng)論(0)  編輯  收藏 所屬分類: java
    主站蜘蛛池模板: 亚洲熟妇av午夜无码不卡| 亚洲区小说区激情区图片区| 91在线品视觉盛宴免费| 亚洲成人免费网址| 亚洲大片免费观看| 99国产精品永久免费视频| 国产免费不卡v片在线观看| 野花高清在线观看免费3中文 | 亚洲另类春色国产精品| 亚洲欧洲日产国码在线观看| 亚洲不卡1卡2卡三卡2021麻豆| 亚洲一级毛片免观看| 亚洲色成人四虎在线观看| 亚洲av日韩综合一区二区三区| 精品无码专区亚洲| 成人午夜免费视频| 久青草视频在线观看免费| 国产精品免费观看调教网| 亚洲一级免费视频| 在线观看免费为成年视频| 波多野结衣一区二区免费视频| 亚洲七七久久精品中文国产| 亚洲精品成人片在线观看精品字幕| 亚洲高清专区日韩精品| 亚洲精品动漫在线| 亚洲av无码专区在线电影天堂| 三级片免费观看久久| 免费看搞黄视频网站| 18勿入网站免费永久| 国产又长又粗又爽免费视频 | 中文字幕无码播放免费| 日韩在线免费看网站| 国产亚洲精午夜久久久久久| 亚洲视频一区调教| 亚洲欧美日韩自偷自拍| 久久免费香蕉视频| 国产电影午夜成年免费视频| 永久免费毛片手机版在线看| 色噜噜AV亚洲色一区二区| 亚洲国产成人九九综合| 成人午夜影视全部免费看|