精品欧美一区二区三区在线观看 _久久久久国色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无码乱码国产精品牛牛| 欧美一区二区三区粗大| 欧美三级网站| 久久嫩草精品久久久久| 国产精品一区电影| 青青青在线视频| 亚洲69av| 制服丝袜在线91| 国产原创中文在线观看| 97视频在线观看网站| 国产伦精一区二区三区| 91精品国产一区| 亚洲一区二区自偷自拍| 国产精品一品二区三区的使用体验| 国产精品毛片一区二区在线看| 亚洲国产91色在线| 色一情一区二区三区| 国产777精品精品热热热一区二区| 国产欧美精品一区二区三区四区 | 欧美日韩视频在线一区二区观看视频| 亚洲中文字幕在线一区| 一区二区激情| 久久综合伊人77777尤物| 国产又爽又黄无码无遮挡在线观看| 亚洲人体在线| 色又黄又爽网站www久久| 久久天天东北熟女毛茸茸| 久草在线网址| 成人av综合在线| 91精品一区二区| 天天爱天天做天天爽| 亚洲黄色毛片| 色综合久久88色综合天天看泰| 中文字幕第24页| 台湾亚洲精品一区二区tv| 日韩三级中文字幕| 欧美女同在线观看| 欧美一级大黄| 欧美日韩国产中文精品字幕自在自线 | 在线播放精品视频| 久久精品女人天堂| 亚州成人av在线| 欧美黄片一区二区三区| 久久久久美女| 日韩一区二区三区国产| 国产又粗又硬视频| 久久最新网址| 亚洲欧洲在线视频| 波多野结衣办公室33分钟| 国产精品sss在线观看av| 日韩视频免费直播| 中文字幕 欧美 日韩| 高清精品久久| 91麻豆精品国产综合久久久久久| 最新中文字幕免费视频| 亚洲精品国产嫩草在线观看| 色综合 综合色| 国产99久久九九精品无码| 国产高清视频色在线www| 亚洲v日本v欧美v久久精品| 成人黄色片免费| 欧美性爽视频| 亚洲一区二区三区自拍| 欧美一级片免费播放| 国产高清在线a视频大全 | 成人高清伦理免费影院在线观看| av一区二区三区四区电影| 国产色片在线观看| 国产电影一区二区三区| 国产精品免费观看高清| 天天av天天翘| 久久久99久久| 在线视频不卡国产| 亚洲91av| 欧美日韩免费区域视频在线观看| 日本三级免费观看| 91亚洲精品| 日韩三级在线观看| 青青草视频播放| 欧美亚洲国产精品久久| 日韩视频免费中文字幕| 欧美日韩免费做爰视频| 国产精品日韩久久久| 国产99久久精品一区二区永久免费| 精品无码一区二区三区的天堂| 久久精品国产色蜜蜜麻豆| 91九色国产在线| 好吊色一区二区三区| 久久亚洲一区二区三区四区| 一本色道久久综合亚洲二区三区| av网站在线免费看推荐| 精品美女国产在线| 国内外成人免费在线视频| 亚洲一区二区三区在线免费| 亚洲精品影视在线观看| 国产麻豆视频在线观看| av成人天堂| 国产精品永久在线| 日本高清视频网站| 国产精品色哟哟| h无码动漫在线观看| 欧美性理论片在线观看片免费| 欧美一区二区三区喷汁尤物| 国产精品无码午夜福利| 欧美91视频| 国产成人精品在线视频| 国产香蕉在线观看| 中文字幕不卡在线观看| 国产真人做爰毛片视频直播| 欧美成人黄色| 日韩av影视在线| 日韩在线观看视频一区二区| 视频一区国产视频| 国产综合 伊人色| www在线观看播放免费视频日本| 日韩欧美一区二区三区久久| 在线观看你懂的视频| gogogo高清在线观看一区二区| 久久久免费观看| 天天躁日日躁aaaxxⅹ| 国产韩日影视精品| 日本午夜人人精品| 风流老熟女一区二区三区| 国产精品国产三级国产普通话三级 | 免费福利在线视频| 亚洲成人av在线电影| 久久天天东北熟女毛茸茸| 日韩欧美一区二区三区免费观看| 亚洲成人网在线| 欧美一级片在线视频| 日韩经典中文字幕一区| 女女同性女同一区二区三区91| 污影院在线观看| 欧美日韩精品二区第二页| 女人又爽又黄免费女仆| 亚洲专区免费| 九九99久久| 黄视频网站在线观看| 亚洲精品在线观看网站| 亚洲熟女www一区二区三区| 久久精品久久久精品美女| 欧美资源一区| 2019年精品视频自拍| 精品视频在线播放| 亚洲欧美在线视频免费| 99久久国产免费看| 日本少妇高潮喷水视频| 丝袜久久网站| 青青青国产精品一区二区| 欧美在线观看在线观看| 欧美性生活大片免费观看网址| 一本加勒比波多野结衣| 亚洲看片一区| 老牛影视免费一区二区| 中文字幕 在线观看| 国产视频欧美视频| 亚洲婷婷综合网| 久久久久亚洲蜜桃| 午夜欧美福利视频| 97精品国产一区二区三区| 成人免费在线网址| 中文在线字幕免费观看| 欧美mv日韩mv亚洲| 99热国产在线观看| 久久精品夜色噜噜亚洲a∨| 99蜜桃臀久久久欧美精品网站| 国产精品密蕾丝视频下载| 国产国语videosex另类| 一区二区高清不卡| 91精品国产综合久久精品| 青青操国产视频| www.亚洲色图.com| 国产成人久久777777| 97精品国产福利一区二区三区| 7777精品久久久大香线蕉小说| 俄罗斯一级**毛片在线播放| 日韩av最新在线观看| 中文字幕天堂在线| 亚洲视频香蕉人妖| av免费观看不卡| 日韩二区在线观看| 日本免费成人网| 综合亚洲自拍| 国产久一一精品| 久草在线视频资源| 亚洲男人第一av网站| 亚洲天堂网在线视频| 一区二区免费在线| 色无极影院亚洲| 国产一区 二区 三区一级| 18禁裸男晨勃露j毛免费观看| 蜜桃精品wwwmitaows| 91精品视频网站| 日韩伦理精品| 久久精品国产91精品亚洲| 亚洲日本在线播放| 欧美日韩国产影片| 精品国产免费观看| 日韩久久一区二区| xxx在线播放| 国产精品888| 国产超碰在线播放| 亚洲国产精品第一区二区| 亚洲一区二区在线看| 老司机精品在线| 成人亲热视频网站| 亚洲国产福利| 欧美激情国内偷拍| 麻豆网站在线| 欧美三级日韩在线| 国产精品久久久视频| 成人免费av在线| 57pao国产成永久免费视频| 国产日韩亚洲欧美精品| 中文字幕中文字幕一区三区| 亚洲区小说区图片区qvod| 99视频在线播放| 激情久久99| 欧美伊久线香蕉线新在线| 在线播放免费av| 日韩在线观看免费高清| 香蕉视频免费在线看| 日韩一卡二卡三卡四卡| 中文字幕免费播放| 日韩欧美在线观看| 日韩精品一区二区三区国语自制| 亚洲日穴在线视频| 自拍偷拍你懂的| 国产丝袜美腿一区二区三区| 中文字幕乱码在线| 成人午夜伦理影院| 少妇精品无码一区二区| 精品一区二区三区久久久| 婷婷丁香激情网| 久久精品一区二区三区中文字幕| 日韩五码在线观看| 欧美亚洲不卡| 青青在线视频免费观看| 欧美伊人久久| 国产一区一区三区| 午夜影院欧美| 香蕉精品视频在线| 水蜜桃久久夜色精品一区| 亚洲7777| 久久电影院7| 亚洲第一精品区| 亚洲草久电影| 日韩精品福利片午夜免费观看| 91精品综合久久久久久久久久久 | 俄罗斯黄色录像| 国产成人精品免费一区二区| 初高中福利视频网站| 国产福利91精品一区二区三区| 好吊操视频这里只有精品| 国产.精品.日韩.另类.中文.在线.播放 | 黄毛片在线观看| 91精品国产高清久久久久久91| 麻豆网站免费在线观看| 国产91在线播放九色快色| 吞精囗交69激情欧美| 国产精品欧美激情在线播放| 欧洲午夜精品| 91久久精品一区二区别| 99亚洲乱人伦aⅴ精品| 国严精品久久久久久亚洲影视 | 二区三区不卡| 国产精品女主播视频| 精品中文字幕一区二区三区四区 | 国产 欧美 自拍| 日韩大陆欧美高清视频区| 国产裸舞福利在线视频合集| 色悠悠久久久久| 日本性爱视频在线观看| 77777少妇光屁股久久一区| 视频二区不卡| 成人午夜在线观看| 国产一区二区在线视频你懂的| 你懂的网址一区二区三区| 国产精品久久久久久久久妇女| 国产成人一二三区| 美女尤物久久精品| 国产xxxxhd| 91片黄在线观看| 182在线观看视频| 五月天欧美精品| 一区二区视频网站| 欧美变态tickle挠乳网站| 精品亚洲成a人片在线观看| 久久精品久久久久久| 女人高潮被爽到呻吟在线观看 | 亚洲图片视频小说| 欧美xxxxxxxxx| 国产高清免费在线播放| 欧美第一黄网免费网站| 日韩免费小视频| 成人综合色站| 精品一区二区三| 欧洲精品一区二区三区久久| 免费看欧美女人艹b| 少妇被狂c下部羞羞漫画| 欧美激情综合五月色丁香| 精品少妇久久久久久888优播| 欧美午夜寂寞影院| 神马午夜电影一区二区三区在线观看| 中文亚洲视频在线| 国产污视频在线播放| 亚洲影院高清在线| 国产精品一区二区av日韩在线| 成人午夜免费在线视频| 蜜臀av性久久久久蜜臀aⅴ四虎| 少妇一级淫片免费放播放| 亚洲色图欧洲色图| 中文字幕一区二区三区人妻四季| 亚洲成人精品视频在线观看| 超碰在线网址| 国产精品影片在线观看| 亚洲国产欧美日韩在线观看第一区 | 国内三级在线观看| 久久久久久久一区二区| 亚洲精品66| 色涩成人影视在线播放| 国产精品试看| 大尺度做爰床戏呻吟舒畅| 亚洲男人的天堂av| 91黄色在线视频| 国产一区二区三区视频在线观看 | 国产精品久久久久久久久久新婚| 久久99国产精品久久99大师| 国产成人永久免费视频| 国产一区二区视频在线| 最新日韩免费视频| 91福利在线免费观看| 久蕉在线视频| 国产成人+综合亚洲+天堂| 欧美影院天天5g天天爽| 国产69精品久久久久久久| 盗摄精品av一区二区三区| a级片在线观看免费| 91精品国产综合久久久蜜臀粉嫩| av午夜在线| 国产精品中文字幕在线| 日本一区二区高清不卡| 成人黄色一区二区| 国产午夜亚洲精品羞羞网站| 中文在线第一页| 亚洲人午夜色婷婷| 久久久一本精品| 日韩一区二区三区资源| 奇米亚洲午夜久久精品| 日本一卡二卡在线播放| 欧美日本不卡视频| 麻豆传媒在线观看| 亚洲伊人成综合成人网| 欧美久久视频| 日本女人性视频| 亚洲韩国精品一区| 日本韩国精品一区二区| 国产精品69久久久久| 日韩理论片av| 日韩精品视频网址| 一区二区欧美国产| 色视频在线观看| 国产精品视频白浆免费视频| 99国产**精品****| 99国产精品免费视频| 亚洲电影一级黄| 免费在线黄色影片| 国产美女精品免费电影| 欧美三级视频| 久久一区二区电影| 欧美亚洲一区二区在线| 老司机精品视频在线观看6| 成人欧美视频在线| 国产亚洲在线观看| 激情无码人妻又粗又大| 日韩美女视频一区二区在线观看| 波多野在线观看| 日韩免费三级| 国产美女在线观看一区| 日本一级一片免费视频| 一区二区欧美激情| 亚洲精品一二三**| 黄色片一级视频| 亚洲欧美综合色| 日韩性xxxx| 成人国产在线激情| 99国产精品99久久久久久粉嫩| 粉嫩精品久久99综合一区| 日韩欧美视频一区| 天天免费亚洲黑人免费| 男人草女人视频| 久久精品一区蜜桃臀影院| 97国产精品久久久| 91成人福利在线| 亚洲国产精品综合久久久| 久久精品无码一区| 日韩欧美www| 99re久久| 国产网站免费在线观看| 亚洲三级电影网站|