精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

Struts 源碼學習初始化屬性資源文件的過程

開發 后端
本文為struts 源碼學習,主要涉及初始化屬性資源文件的過程。資源文件分為內部資源文件和外部資源文件。

資源文件,不過是strus架構內部使用的,還是用戶自己定義的資源文件,都是資源文件。之所以會用到資源文件,有兩個原因:

一是方面是系統通過配置來實現,那么就會有更好的擴展性,也會更靈活。

另一個方面,可以實現國際化。

所以我們可能會有一個或多個資源配置文件。

那么資源文件到底是如何實現其初始化的呢? 

內部資源文件和外部資源文件是分開初始化的,其實是使用了不同的初始化方法。內部資源文件是由init()調用initInternal()直接初始化的,而用戶的資源文件是通過配置模塊實現的。

內部資源文件如何初始化?

protected void initInternal() throws ServletException { 
        try {
            internal = MessageResources.getMessageResources(internalName);
        } catch (MissingResourceException e) {

        }
}


上面的方法就實現了內部資源的初始化。

其實很簡單,通過資源文件定位,然后返回成一個MessageResources的對象就OK了。

也就是internal變量,以后通過此變量就可以直接取屬性的值了。

那么你可能會問,getMessageResources(internalName)又是如何實現取得資源文件的?

我們再跟蹤一下:
   

public synchronized static MessageResources getMessageResources(String config) { 

        if (defaultFactory == null) {
           defaultFactory = MessageResourcesFactory.createFactory();
        }
        return defaultFactory.createResources(config);
    }


很明顯,這里面也使用了工廠模式。然后由工廠去生成一個資源MessageResources.

我們可以這樣理解,所有的資源其實屬于同一類產品,所以他們可是使用同一個工廠。
上面的初始化工廠的部分,我們其實可以看到, MessageResourcesFactory是一個抽象類,其抽象方法正是createResources(config),

那么他的實現是誰呢?這要問我們的工廠,因為你只有知道了工廠,才會知道產品。

所有我們要先知道,我們初始化了一個什么工廠。

所以我們再看:
   

 public static MessageResourcesFactory createFactory() { 

        // Construct a new instance of the specified factory class
        try {
            if (clazz == null)
                clazz = RequestUtils.applicationClass(factoryClass);
            MessageResourcesFactory factory =
                (MessageResourcesFactory) clazz.newInstance();
            return (factory);
        } catch (Throwable t) {
            LOG.error("MessageResourcesFactory.createFactory", t);
            return (null);
        }

    }

其實工廠實由factoryClass決定的。
這在

    protected static String factoryClass = 
        "org.apache.struts.util.PropertyMessageResourcesFactory";

定義了。

所以我們可以看到,其實是PropertyMessageResourcesFactory實現了*.properties文件的初始化。

初始化后的結果在哪?如何去使用呢?

內部資源文件初始化后的結果以MessageResources的實例保存在internal變量上。其定義如下:

protected MessageResources internal = null;

所以只有struts內部能用,我們就不能調用了。

用戶的資源文件時如何初始化的呢?

用戶的資源文件是通過配置模塊ModueConfig來實現的。上面我們已經初始化了一個ModuleConfig了。所以我們就可

以來初始化我們的資源文件了。

initModuleMessageResources(moduleConfig); 

struts的內部分工也是非常明顯的。

ModuleConfig用來管理各個不同的模塊的配置。

其實,各個由他管理的模塊也有自己的配置。

屬性資源文件的配置是就是MessageResourcesConfig

此配置的實例由ModuleConfig來管理,所有由ModuleConfig的實例,可以得到所有屬性文件配置的實例。

其實是每一個properties文件,就會對應一個MessageResourcesConfig.

所以我們就可以理解下面的部分代碼了。

protected void initModuleMessageResources(ModuleConfig config) 
        throws ServletException {

        MessageResourcesConfig mrcs[] = config.findMessageResourcesConfigs();
        for (int i = 0; i < mrcs.length; i++) {
            if ((mrcs[i].getFactory() == null)
                || (mrcs[i].getParameter() == null)) {
                continue;
            }
            if (log.isDebugEnabled()) {
                log.debug(
                    "Initializing module path '"
                        + config.getPrefix()
                        + "' message resources from '"
                        + mrcs[i].getParameter()
                        + "'");
            }

這個地方得到是工廠的類的名稱。如:

"org.apache.struts.util.PropertyMessageResourcesFactory"
  

通過這個,我們和前面的比較就可以知道,只要是屬性文件,就用的都是這個工廠。
   

String factory = mrcs[i].getFactory();
  

知道了用哪個工廠之后,就可以實例化了,創建一個工廠了。

            MessageResourcesFactory.setFactoryClass(factory); 
            MessageResourcesFactory factoryObject =
                MessageResourcesFactory.createFactory();
            factoryObject.setConfig(mrcs[i]);

        

由工廠生產出一個MessageResources

            MessageResources resources = 
                factoryObject.createResources(mrcs[i].getParameter());
            resources.setReturnNull(mrcs[i].getNull());
            resources.setEscape(mrcs[i].isEscape());
   
          將解析的結果保存在context 中。

            getServletContext().setAttribute(
                mrcs[i].getKey() + config.getPrefix(),
                resources);
        }

}
至此,strtus如何初始化資源文件的過程也完成了?,F在我們已經知道了struts初始化屬性資源文件的過程。
最終解析的結果是以MessageResources的形式保存在context中。
至于,如何將properties文件解析成MessageResources,詳細地過程和實現,再去細細的學習和研究。

【編輯推薦】

  1. 在Eclipse中開發struts應用程序
  2. 手把手教你在Eclipse中配置開發Struts
  3. Eclipse下開發struts完整解決亂碼問題
  4. Struts相關背景介紹
  5. 使用Easy Struts for Eclipse開發Struts
責任編輯:張燕妮 來源: 百度空間
相關推薦

2009-06-05 09:40:59

2025-03-14 10:37:24

SpringSpring IOC容器

2025-05-21 10:09:09

Spring 5.xIOC編程

2012-03-13 13:38:42

Java

2021-07-07 05:00:17

初始化源碼

2023-08-28 07:25:58

DDE服務器管理器

2023-10-06 20:57:52

C++聚合成員

2011-07-07 15:13:42

PHP

2009-11-18 17:53:18

PHP數組初始化

2022-01-26 11:00:58

源碼層面Vue3

2013-06-17 17:02:15

Windows PhoWP開發資源文件

2024-08-14 17:21:34

2023-11-12 23:08:17

C++初始化

2012-04-09 13:43:12

Java

2011-08-15 17:52:21

iPhone應用對象NSString

2009-07-08 11:01:40

Servlet源文件

2021-12-13 00:54:14

組件Vue3Setup

2010-02-05 09:31:23

Ubuntu 配置文件

2009-08-21 16:13:27

C#讀取資源文件

2011-06-20 14:18:27

Qt 資源 文件
點贊
收藏

51CTO技術棧公眾號

亚洲综合视频在线| 精品中文av资源站在线观看| 亚洲精品v天堂中文字幕| 国产极品尤物在线| 久久久pmvav| 麻豆91在线观看| 欧美激情18p| 国精产品一区二区三区| 亚洲a∨精品一区二区三区导航| 国产精品免费aⅴ片在线观看| 97伦理在线四区| 99热国产在线观看| 奇米狠狠一区二区三区| 91精品国产综合久久国产大片| 国产真实老熟女无套内射| 免费a在线观看| 国产成人免费在线视频| 国产精品99久久99久久久二8| 精品国产视频一区二区三区| 亚洲无线观看| 欧美亚洲一区三区| 日本国产在线播放| 国产成人l区| 久久久久久久久久久99999| 7777精品久久久大香线蕉小说| 日韩不卡视频在线| 国产精品黄色| 久久久国产精品亚洲一区| 色噜噜日韩精品欧美一区二区| 国产精品美女久久久久人| 在线精品国精品国产尤物884a| 成人免费观看在线| 麻豆免费在线观看| 国产蜜臀av在线一区二区三区| 国产成人精品一区二区三区福利| 中文字幕永久免费视频| 欧美亚洲在线| 国内精品小视频| 国产高清在线免费观看| 国产精品一国产精品| 日韩电影中文字幕| 北京富婆泄欲对白| 成人在线tv视频| 日韩欧美黄色影院| 91丨porny丨九色| avtt久久| 91麻豆精品国产91久久久资源速度| 久草综合在线观看| 毛片在线网站| 精品国产乱码久久久久酒店| 久草免费福利在线| 五月花成人网| 亚洲自拍偷拍综合| 成人区一区二区| 三级资源在线| 亚洲成年人网站在线观看| 青青青在线观看视频| 午夜羞羞小视频在线观看| 一区二区三区av电影| 欧美日韩激情四射| 日本精品600av| 亚洲午夜视频在线| 欧美视频免费看欧美视频| av影片在线| 疯狂欧美牲乱大交777| 欧美日韩成人免费视频| 在线日韩影院| 在线观看日韩电影| av亚洲天堂网| 久久九九精品视频| 精品福利一区二区三区免费视频| 国产在线观看免费播放| 极品尤物一区| 亚洲人av在线影院| 亚洲综合第一区| 中文乱码免费一区二区三区下载| 欧美成人高清视频| 天堂资源在线播放| 另类图片国产| 国产精品日韩专区| 国产精品视频久久久久久| 国产mv日韩mv欧美| 欧美精品欧美精品系列c| 国产高清av在线| 中文字幕亚洲成人| 日韩精品一区在线视频| 户外露出一区二区三区| 91精品国产麻豆| 中国极品少妇videossexhd| 精品一区在线| 成人97在线观看视频| 日本一级淫片色费放| 视频一区国产视频| 91传媒在线免费观看| 飘雪影院手机免费高清版在线观看| 中文字幕欧美日韩一区| 黄色片免费在线观看视频| 在线最新版中文在线| 欧美日韩国产首页| av2014天堂网| 99热在线成人| 97久久精品人搡人人玩| 一级片视频免费| 99精品视频一区二区| 亚洲国产精品123| 午夜av在线免费观看| 在线观看国产日韩| 娇妻高潮浓精白浆xxⅹ| 日本道不卡免费一区| 国语自产偷拍精品视频偷| 啪啪小视频网站| 不卡av电影在线播放| 一区二区三区四区在线视频| 日韩av一卡| 日韩欧美中文一区二区| 极品蜜桃臀肥臀-x88av| 亚洲人成人一区二区三区| 国产色婷婷国产综合在线理论片a| 日韩一卡二卡在线| 亚洲人成影院在线观看| 中文字幕在线导航| 奇米影视777在线欧美电影观看| 精品国产一区二区三区久久狼黑人 | 欧美aa免费在线| 狠狠狠色丁香婷婷综合激情| 极品校花啪啪激情久久| 超碰在线观看免费| 欧美午夜宅男影院| 亚洲专区区免费| 午夜精品av| 成人免费视频97| 国产网站在线播放| 精品久久久久久久久久久久久 | 丁香色欲久久久久久综合网| 欧洲精品久久久久毛片完整版| 亚洲欧美日韩精品久久亚洲区| 日韩av黄色片| 国产成人无遮挡在线视频| 最新av在线免费观看| 福利一区二区三区视频在线观看| 日韩高清a**址| 国产做受高潮漫动| 99久久久久久| 鲁一鲁一鲁一鲁一澡| 国产乱人伦精品一区| 久久久久久九九九| 丰满少妇一级片| 亚洲伊人伊色伊影伊综合网| 做a视频在线观看| 99久久夜色精品国产亚洲96| 成人精品福利视频| 麻豆tv在线| 日韩午夜在线观看视频| 欧美日韩三级在线观看| 国产99久久久久久免费看农村| 成年在线观看视频| 国产第一页在线视频| 成人福利视频网站| 国产精品国产福利国产秒拍| 邻家有女韩剧在线观看国语| 一本色道亚洲精品aⅴ| 无码国产69精品久久久久同性| 久久久久99| 日韩亚洲视频在线| 欧美爱爱视频| 欧美成人自拍视频| 亚洲老妇色熟女老太| 精品久久久久久国产| 91精品国产自产| 免费观看久久久4p| 四虎永久免费网站| 精品深夜福利视频| 国产成人精品国内自产拍免费看| 国产系列在线观看| 欧美高清激情brazzers| 久久久久久久久精| 91免费观看国产| 国产区二区三区| 欧美 日韩 国产 一区| 国产亚洲情侣一区二区无| 亚洲va中文在线播放免费| 日日骚久久av| 欧美自拍偷拍一区二区| 欧美自拍丝袜亚洲| 免费在线黄色片| 久久婷婷一区二区三区| 天堂在线中文在线| 亚洲麻豆一区| 在线视频福利一区| 青草久久视频| 国产中文日韩欧美| a天堂资源在线| 日韩在线视频国产| 天天干,夜夜爽| 欧美日韩一级视频| 久久夜色精品亚洲| 国产精品福利一区二区三区| 中文字幕免费高清视频| 美腿丝袜亚洲色图| 国产精品无码人妻一区二区在线| 欧美一区二区三区激情视频| 成人做爰66片免费看网站| 国产综合av| 98精品在线视频| h片在线观看网站| 亚洲无限av看| 日本激情视频网站| 在线综合视频播放| 亚洲 欧美 中文字幕| 一区二区高清免费观看影视大全 | 你懂的一区二区三区| 91精品久久久久久蜜桃| 日本一区二区三区视频在线| 韩国三级日本三级少妇99| 精品国产丝袜高跟鞋| 亚洲精品影视在线观看| 亚洲第一页综合| 欧美精品亚洲一区二区在线播放| 五月天婷婷激情| 亚洲永久精品大片| 最新一区二区三区| 欧美韩国一区二区| 亚洲 小说 欧美 激情 另类| 成人动漫在线一区| 免费观看黄网站| 精品在线你懂的| 九九热在线免费| 久久亚洲国产精品一区二区| 免费不卡av在线| 欧美午夜一区| 天天想你在线观看完整版电影免费| 久久美女精品| 日韩欧美一区二区视频在线播放 | 一级片在线免费观看视频| 色综合久久综合| 啦啦啦免费高清视频在线观看| 亚洲高清免费在线| 日韩激情一区二区三区| 亚洲一区二区视频| 久久黄色免费视频| 一级女性全黄久久生活片免费| 99热精品免费| 亚洲一区二区在线免费观看视频 | 国产精品午夜av在线| 日韩av综合| 99理论电影网| 超碰成人在线免费| 国产麻豆乱码精品一区二区三区| 亚洲精品高潮| 国产精品成人一区二区三区| 国产成人精品亚洲线观看| 国产精品 日韩| 久久精品亚洲成在人线av网址| 国产日韩一区二区三区| 日韩精品a在线观看91| 久久久久天天天天| 神马影视一区二区| 亚洲欧美国产精品桃花| 91日韩免费| 亚洲啊啊啊啊啊| 亚洲三级观看| 超碰97人人射妻| 免费人成在线不卡| 成年人网站av| kk眼镜猥琐国模调教系列一区二区| 久久无码人妻精品一区二区三区| 久久尤物电影视频在线观看| 超薄肉色丝袜一二三| 亚洲色图第一区| 国产无遮无挡120秒| 色综合天天综合网国产成人综合天| 天天干天天色综合| 欧美福利一区二区| 欧洲av在线播放| 伊人av综合网| 中文av资源在线| 4p变态网欧美系列| 精品久久福利| 国产精品二区在线| 国产亚洲第一伦理第一区| 亚洲第一精品区| 亚洲精品一二| 色播五月综合网| 成人免费观看男女羞羞视频| 中文幕无线码中文字蜜桃| 中文字幕av资源一区| 麻豆亚洲av熟女国产一区二 | 成人在线看视频| 国产一区三区三区| 中文字幕一区三区久久女搜查官| 国产精品美女久久久久aⅴ| 久草资源在线视频| 在线精品视频一区二区| 黄色三级网站在线观看| 中文字幕欧美日韩在线| 97人人在线视频| 国产精品羞羞答答| 清纯唯美亚洲经典中文字幕| 欧美一级免费在线观看| 国产一区二区精品| 婷婷中文字幕在线观看| 久久丝袜美腿综合| 青娱乐在线视频免费观看| 91成人网在线| www黄色网址| 深夜福利国产精品| 在线精品亚洲欧美日韩国产| 99免费在线观看视频| 日韩在线视频精品| 欧美视频在线播放一区| 国产剧情一区在线| 久久精品国产亚洲AV成人婷婷| 偷窥少妇高潮呻吟av久久免费| 国产精品无码一区二区桃花视频| 亚洲欧洲在线播放| 黄色软件视频在线观看| 91丨九色丨国产在线| 日韩国产专区| 国产精品第12页| 97久久超碰精品国产| 久久99久久98精品免观看软件| 制服丝袜亚洲播放| 在线看av的网址| 国产精品∨欧美精品v日韩精品| 欧美变态挠脚心| 69sex久久精品国产麻豆| 国产黄色精品视频| 欧美视频www| 在线91免费看| 久久99精品久久久久久野外| 国产免费一区二区三区在线能观看 | 加勒比婷婷色综合久久| 欧美日韩国产美女| xxxxx日韩| 国产精品久久一区| 精品国产精品国产偷麻豆| 成人羞羞国产免费网站| 久久嫩草精品久久久久| 国产精品第5页| 日韩二区三区在线| 欧美大电影免费观看| 欧美日韩在线精品一区二区三区| 国产精品毛片一区二区三区| 182在线视频| 欧美日韩精品在线| 日韩精品视频无播放器在线看 | 性欧美8khd高清极品| 欧美精品一区三区| 亚洲日本一区二区三区在线| 国产成人亚洲综合无码| 成人丝袜视频网| 国产精品黄色大片| 亚洲精选在线观看| 国模一区二区| 一区二区冒白浆视频| 激情欧美日韩一区二区| 五月婷婷一区二区| 亚洲成人精品视频在线观看| 123区在线| 欧美日韩精品久久久免费观看| 丝袜诱惑亚洲看片| 日本成人免费在线观看 | 精品露脸国产偷人在视频| 涩涩视频在线观看免费| 国产成人一区二区三区电影| 第一sis亚洲原创| www.五月天色| 亚洲国产日产av| 欧美亚洲日本| 国产欧美亚洲视频| 国产精品theporn| 黄色在线观看av| 欧美三级一区二区| 国产高清一区二区三区视频 | 精品久久久在线观看| 男人天堂亚洲二区| 成人黄色免费片| 亚洲人成在线影院| 国产农村妇女精品一区| 精品999在线播放| 久久亚洲精品爱爱| 黄色一级大片免费| 久久久国产午夜精品| 99热这里只有精品66| 78色国产精品| 国产精品成人a在线观看| 亚洲视频 中文字幕| 在线视频一区二区三区| av在线看片| 欧美日韩在线一区二区三区| 国产伦精品一区二区三区免费 | 欧美精品18+| 看黄在线观看| 99精品视频网站| 久久午夜羞羞影院免费观看| 国产视频手机在线观看| 日韩免费av片在线观看| 激情视频一区| 一级性生活免费视频| 日韩精品在线播放|