91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Struts初始化屬性資源文件的過程是怎樣的

發布時間:2022-01-11 14:46:26 來源:億速云 閱讀:161 作者:柒染 欄目:編程語言

這篇文章給大家介紹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) {

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

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

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

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

所以我們再看:

 public static MessageResourcesFactory createFactory() {

其實工廠實由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 {

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

"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 中。

}
至此,strtus如何初始化資源文件的過程也完成了。現在我們已經知道了struts初始化屬性資源文件的過程。
最終解析的結果是以MessageResources的形式保存在context中。

關于Struts初始化屬性資源文件的過程是怎樣的就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

大埔县| 清镇市| 博客| 得荣县| 隆德县| 策勒县| 米脂县| 惠州市| 安陆市| 嫩江县| 尼勒克县| 那坡县| 增城市| 穆棱市| 固始县| 泌阳县| 闽清县| 平乡县| 大新县| 曲松县| 邵东县| 台山市| 景宁| 饶平县| 泾川县| 五原县| 漳浦县| 卓尼县| 尖扎县| 刚察县| 白水县| 牟定县| 仁怀市| 丽江市| 来宾市| 张家港市| 信丰县| 顺平县| 观塘区| 会同县| 静安区|