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

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

Jakarta Commons Digester 簡介和具體使用方法

2019-11-18 14:17:41
字體:
來源:轉載
供稿:網友

  1. Digester 就是讓你配置一個 xml 轉到 java Object 對應的程序, 當一些 XML
中特定的屬性將會觸發一些被稱為 rules 的動作, 有一些屬性是已經被定義好了,
當然你也可以建立自己所需要的. 而 Digester 也包含了以下高級的特性 :

*能夠嵌入你原本的對應方式, 而不會影響你的需求.
*自定義(Customized)的 namespace-aware 的執行, 以至于你可以定義 rules 恰當獨特的 XML
命名空間.
*將所有的 Rules 放入 RuleSets 可以簡單方便地重復使用在其它需要相同類型的項目之中.


2. 使用 Digester 之前, 你必須先擁有一些 libraries 在你的 classpath,
Commons-Digester, Commons-BeanUtils, Commons-Collections, Commons-Logging,
及符合 SAX ( Simple API for XML ) 2.1 的 XML parser 或 JAXP ( Java API for
XML Parsing ) 1.2.1. 我是建議可以去抓 crimson 及 xerces 等等. 當前版本為:1.5
3. Digester 的處理過程 (Rule, XPath, Object Stack)
*建立一個新的對象 // 附注: 假如有兩個一上相同屬性名稱, 因為堆疊會蓋掉, 建議不采用
void addObjectCreate(java.lang.String pattern, java.lang.String className, java.lang.String attributeName)


*建立調用 Method
void addCallMethod(java.lang.String pattern, java.lang.String methodName, int paramCount)


*建立調用 Method 傳入的參數
void addCallParam(java.lang.String pattern, int paramIndex)


*XML 解析
java.lang.Object parse(java.lang.String uri) throws java.io.IOException, org.xml.sax.SAXException
使用 Digester 內建的規則
ObjectCreate
SetNext
SetPRoperties
SetProperty
CallMethod
FactoryCreate
4. 使用自定義的規則
當你打開原碼目錄中, org/apache/commons/digester/ 下有一個 digester-rules.dtd .
這個 DTD 文件就是在定義 Digester 該如何解析你傳入的 XML 文件, 你也可以自己定義相關的
patterns , 寫在 digester-rules.xml 中, 讓 Digester 可以根據你的需要去解析數據.
這樣做可以減少程序中, 必須非凡寫 addObjectCreate, addCallMethod 等等 method.
不過, 我還沒有見到目前有任何 project 采用這種做法.

<?xml version="1.0"?>
<!DOCTYPE digester-rules SYSTEM "digester-rules.dtd">

<digester-rules>
<object-create-rule pattern="*/foo" classname="Foo"/>
<set-properties-rule pattern="*/foo"/>
</digester-rules>

5. Struts ActionServlet 中用到的范例
protected void initServlet() throws ServletException {

//....... 省略 .................

// Prepare a Digester to scan the web application deployment descriptor
Digester digester = new Digester();
digester.push(this);
digester.setNamespaceAware(true);
digester.setValidating(false);

//....... 省略 .................
// Register our local copy of the DTDs that we can find
for (int i = 0; i < registrations.length; i += 2) {
URL url = this.getClass().getResource(registrations[i+1]);
if (url != null)
digester.register(registrations[i], url.toString());
}

// Configure the processing rules that we need
// 設置相關的元素和執行規則(rules)的對應
digester.addCallMethod("web-app/servlet-mapping","addServletMapping", 2);
digester.addCallParam("web-app/servlet-mapping/servlet-name", 0);
digester.addCallParam("web-app/servlet-mapping/url-pattern", 1);

InputStream input= null;
try {
// 獲取 /WEB-INF/ 下的 web.xml 來作解析

input =
getServletContext().getResourceAsStream("/WEB-INF/web.xml");
digester.parse(input);

} catch (Throwable e) {
log.error(internal.getMessage("configWebXml"), e);
} finally {
if (input != null) {
try {
input.close();
} catch (IOException e) {
;
}
}
}

//....... 省略 .................

/**
* Remember a servlet mapping from our web application deployment
* descriptor, if it is for this servlet.
*
* @param servletName The name of the servlet being mapped
* @param urlPattern The URL pattern to which this servlet is mapped
*/
//當 Digester 在 parse 時將執行 addServletMapping 這個 method
public void addServletMapping(String servletName, String urlPattern) {

if (log.isDebugEnabled()) {
log.debug("Process servletName=" + servletName +
", urlPattern=" + urlPattern);
}
if (servletName == null) {
return;
}
if (servletName.equals(this.servletName)) {
this.servletMapping = urlPattern;
}

}
}

相關書目或相關文章
*Jakarta Commons:
http://jakarta.apache.org/commons/index.Html
*Jakarta Commons Digester:
http://jakarta.apache.org/commons/digester.html
*Simplify XML file processing with the Jakarta Commons Digester :
http://jakarta.apache.org/commons/digester/api/index.html
假如你的英文還可以,可以看看這篇文章:
http://www.javaworld.com/javaworld/jw-10-2002/jw-1025-opensourceprofile.html

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲深夜福利视频| 国产精品视频久久| 黑人巨大精品欧美一区二区一视频| 亚洲女同精品视频| 久久久黄色av| 91av在线免费观看视频| 欧美精品video| 色久欧美在线视频观看| 亚洲夜晚福利在线观看| 国产精品日日摸夜夜添夜夜av| 欧美日韩人人澡狠狠躁视频| 欧美专区中文字幕| 欧美精品18videos性欧| 欧美极品美女视频网站在线观看免费| xxx一区二区| 国产精品高精视频免费| 欧美日韩国产丝袜美女| 91豆花精品一区| 91精品免费看| 7m第一福利500精品视频| 综合欧美国产视频二区| 黑人极品videos精品欧美裸| 久久久久久久999| 亚洲女人天堂成人av在线| 久久久av免费| 国产精品第一视频| 97人人做人人爱| 精品女同一区二区三区在线播放| 欧美整片在线观看| 日韩美女毛茸茸| 国产午夜精品全部视频在线播放| 亚洲网站视频福利| 亚洲精品国偷自产在线99热| 成人网在线免费看| 亚洲精品一区久久久久久| 亚洲一区二区自拍| 国产精品jvid在线观看蜜臀| 激情亚洲一区二区三区四区| 亚洲九九九在线观看| 国产伦精品一区二区三区精品视频| 国语自产精品视频在线看| 91香蕉国产在线观看| 在线播放精品一区二区三区| 夜夜嗨av一区二区三区免费区| 精品美女久久久久久免费| 91精品国产91久久久久久久久| 不卡中文字幕av| 亚洲人成77777在线观看网| 久久国产精品首页| 久久影视电视剧凤归四时歌| 亚洲精品日韩av| 亚洲国产欧美一区| 亚洲精品98久久久久久中文字幕| 亚洲精品动漫久久久久| 日本国产欧美一区二区三区| 欧美极品少妇xxxxⅹ喷水| 91精品国产精品| 91大神福利视频在线| 亚洲天堂av女优| 日韩激情第一页| 性色av一区二区三区红粉影视| 欧美电影电视剧在线观看| 黑人与娇小精品av专区| 久久久久久这里只有精品| 亚洲最新av在线网站| 久久综合久中文字幕青草| 欧美成人免费小视频| 国产精品都在这里| 久久噜噜噜精品国产亚洲综合| 欧美精品在线看| 韩国精品美女www爽爽爽视频| 亚洲欧美一区二区三区在线| 国产精品极品美女在线观看免费| 国产免费一区二区三区香蕉精| 精品国产乱码久久久久久虫虫漫画| 亚洲第一男人av| 日韩av免费在线观看| 国产伊人精品在线| 91久久中文字幕| 欧美成人午夜影院| 亚洲第一精品久久忘忧草社区| 精品成人国产在线观看男人呻吟| 亚洲最大中文字幕| 一区二区欧美在线| 亚洲人成在线观看| 国产在线精品自拍| 久久激情视频免费观看| 国产精品大片wwwwww| 国产精品欧美激情| 91夜夜揉人人捏人人添红杏| 日韩精品中文字幕在线观看| 亚洲国产精品嫩草影院久久| 欧美在线免费看| 久久中文精品视频| 欧美色播在线播放| 亚洲最大在线视频| 在线看日韩欧美| 欧美精品生活片| 91精品视频在线免费观看| 亚洲免费伊人电影在线观看av| 亚洲2020天天堂在线观看| 成人动漫网站在线观看| 波霸ol色综合久久| 九九热这里只有精品免费看| 久青草国产97香蕉在线视频| 欧美日韩国产精品一区| 日韩精品中文字幕在线播放| 久久久免费电影| 国产一区二区三区三区在线观看| 亚洲美女av在线| 国产精品丝袜白浆摸在线| 欧美专区第一页| 亚洲国产精品99| 亚洲成年人影院在线| 久久伊人精品天天| 91探花福利精品国产自产在线| 欧美丰满老妇厨房牲生活| 久久久国产一区二区| 热久久免费视频精品| 中文字幕国产精品久久| 亚洲欧美日韩久久久久久| 欧美wwwwww| 中文欧美日本在线资源| 国产精品视频导航| 亚洲精品日产aⅴ| 久久精品久久久久久| 精品福利在线观看| 久久天天躁狠狠躁夜夜躁2014| 欧美激情一区二区三区在线视频观看| 成人h视频在线观看播放| 国产精品亚洲综合天堂夜夜| 日韩在线中文字幕| 欧美成人免费观看| 日产精品久久久一区二区福利| 美女久久久久久久| 中文日韩在线观看| 久久在精品线影院精品国产| 久久香蕉精品香蕉| 欧美精品在线观看91| 欧美国产在线视频| 日韩欧亚中文在线| 色av中文字幕一区| 国产日韩精品一区二区| 欧美最顶级丰满的aⅴ艳星| 中文字幕亚洲欧美日韩高清| 国产亚洲欧美日韩一区二区| 尤物tv国产一区| 国外日韩电影在线观看| 精品欧美国产一区二区三区| 国产精品色悠悠| 欧美日本黄视频| 91免费欧美精品| 91av国产在线| 欧美最猛性xxxxx(亚洲精品)| 亚洲欧美国产精品va在线观看| 国产在线观看一区二区三区| 日韩亚洲第一页| 欧洲美女免费图片一区| 亚洲最大的av网站| 欧美日韩精品国产| 亚洲男人天堂网站| 亚洲精品一区二区网址| 日韩高清电影好看的电视剧电影| 成人精品久久久|