Struts2常量的配置
struts.xml配置文件最大的作用就是配置Action和請求之間的對應關系,并配置邏輯視圖名和物理視圖資源之間的對應關系。除此之外,struts.xml文件還有一些額外的功能,例如Bean配置、配置常量、導入其他配置文件等。
Struts2除了可使用struts.xml文件來管理配置之外,還可使用struts.properties晚間來管理常量,該文件定義了struts2框架的大量常量,開發者可以通過改變這些常量來滿足應用的需求。struts.properties文件是一個標準的Properties文件,該文件包含了系列的key-value對,每個key就是一個struts2常量,每個value就是struts2的常量值。
只要將struts.properties文件放入Web應用的類加載路徑下,Struts2框架就可以加載該文件,通常我們將該文件放在WEB-INF/classes路徑下。在struts2-core-2.2.1.jar壓縮文件的org/apache/struts2路徑下有一個default.properties文件,該文件里為Struts2的所有常量,這些常量都有默認的值,我們可以通過打開這個文件來了解struts2所支持的常量,這里不作介紹。
Struts2默認會加載類加載路徑下的struts.xml, struts-default.xml, struts-plugin.xml三類文件,其中struts.xml是開發者定義的默認配置文件,struts-default.xml是Struts2框架自帶的配置文件,struts-plugin.xml是Struts2插件的默認配置文件。
Struts2配置常量公有三種方式:
-
通過struts.properties文件
-
通過struts.xml配置文件
-
通過Web應用的web.xml文件
Struts2的所有配置文件,包括struts-default.xml、struts-plugin.xml,甚至用于自定義的,只要Struts2加載的配置文件中都可以使用常量配置的方式來配置Struts2常量。如下struts.xml配置片段配置了一個struts常量,該常量可以代替struts.properties文件中Struts2配置屬性。
<struts> <!-- 通過constant元素配置Struts2的屬性 --> <constant name="struts.custom.i18n.resource" value="mess"/> </struts>
除此之外,當我們在web.xml文件中配置StrutsPrepareAndExecuteFilter時也可以配置Struts2常量,此時采用為StrutsPrepareAndExecutorFilter配置初始化參數的方式來配置Struts2常量,如下是代碼片段:
<filter> <filter-name>struts2</filter-name> <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecutFilter</filter-class> <init-param> <param-name>struts.custom.i18n.resource</param-name> <param-value>mess</param-value> </init-param> </filter>
上面的配置文件中出題字代碼配置了一個常用屬性:struts.custom.i18n.resources,該屬性指定了應用所需的國際化資源文件的baseName為mess。
通常推薦在struts.xml文件中定義struts2屬性,而不是在struts.properties文件中定義,之所以保留使用struts.properties文件定義Struts2屬性的方式,主要是為了保持與WebWork的向后兼容性。
通常,Struts2框架按照如下的順序加載Struts2常量:
-
struts-default.xml:該文件保存在struts2-core-2.1.2.jar文件中
-
struts-plugin.xml:該文件保存在struts2-Xxx-2.1.2.jar等Struts2插件的jar文件中
-
struts.xml:該文件是Web應用默認的Struts2配置文件
-
struts.properties:該文件是Struts2默認的配置文件
-
web.xml:該文件是Web應用的配置文件
上面定義了Struts2框架搜索常量的順序,如果在多個文件中配置了同一個struts2常量,則后一個文件中配置的常量會覆蓋前面文件中配置的常量值。
在默認情況下,Struts2只自動加載類加載路徑下的struts.xml, struts-default.xml和struts-plugin.xml三類文件。但隨著應用規模的增大,系統中Action的數量也大量增加,將導致struts.xml配置文件變得非常臃腫。為了避免這個問題,提高struts.xml文件的可讀性,我們可以將struts.xml配置文件分解成多個配置文件,然后在sturts.xml文件中包含其他配置文件即可。
下面的struts.xml文件中就通過include手動導入了一個配置文件:struts-part1.xml文件,這樣,在加載struts.xml文件的時候就會同時加載struts.xml文件中引用到的struts-part1.xml文件。通過這種方式,就可以將Struts2的Action按模塊配置在多個配置文件當中,下面是代碼片段:
<struts> <include file="struts-part1.xml" /> </struts>