struts.xml 是 Struts2 框架的核心配置文件,該文件主要用於配置 Action 和請求的對應關係,以及配置邏輯視圖和物理視圖(邏輯視圖就是在 struts.xml 文件中配置的 <result> 元素,它的 name 屬性值就是邏輯視圖名;物理視圖是指 <result> 元素中配置的結果頁面,如 JSP 文件)資源的對應關係。web
存放路徑:struts.xml 文件一般放在 Web 應用的 WEB-INF/classes 目錄下,在該目錄下的 struts.xml 文件能夠被 Struts2 框架自動加載。因爲 MyEclipse 開發工具在編譯時會自動將 src 路徑下的 struts.xml 文件編譯後放到 WEB-INF/classes 路徑下,因此直接將其放到項目的 src 路徑下便可。apache
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN" "http://struts.apache.org/dtds/struts-2.3.dtd"> <struts> <!--<constant>元素用常量的配置--> <constant name="struts.enable.DynamicMethodInvocation" value="false" /> <constant name="struts.devMode" value="true" /> <!--<package>元素用於包配置--> <package name="default" namespace="/" extends="struts-default"> <!--配置Action--> <action name="index" class="Xxx"/> <!--配置Result--> <result type="dispatcher"> <param name="location">/index.jsp</param> </result> </action> </package> <!-- <include>元素用於包含配置 --> <include file="example.xml"/> </struts>
● <struts> 元素:是文件的根元素,全部其餘元素都放在 <struts></struts> 中。框架
● <constant> 元素:用於進行常量配置。jsp
● <package> 元素:用於進行包配置,在 Struts2 框架中,包用於組織 Action 和攔截器等信息,每一個包都是由零個或多個攔截器以及 Action 所組成的集合。工具
● <include> 元素:用於在一個 struts.xml 配置文件中包含其餘的配置文件。post
常量配置
在使用 Struts2 框架開發的項目中,一般須要使用大量的常量,這些常量大多在默認的配置文件中已經配置好,但因爲用戶的需求不一樣,開發的要求也有所不一樣,這時可能就須要對這些常量值進行修改,其修改的方法就是在配置文件中對常量進行從新配置。開發工具
一般使用的三種方式:編碼
- 在 struts.xml 文件中使用 <constant> 元素配置常量(經常使用方式)。
- 在 struts.properties 文件中配置常量。
- 在 web.xml 文件中經過 <init-param> 元素配置常量。
在 struts.xml 文件中經過 <constant.../> 元素配置常量時,須要指定兩個必填的屬性 name 和 value。其中 name 屬性用於指定常量的常量名,value 屬性用於指定常量的常量值。spa
<!-- 配置了常量 struts.i18n.encoding 和 struts.devMode。
其中 struts.i18n.encoding 用於指定 Struts2 應用程序的默認編碼集爲 UTF-8,struts.devMode 用於指定項目使用的是開發模式。 --> <struts> <!--設置默認編碼集爲UTF-8--> <constant name="struts.il8n.encoding" value="UTF-8" /> <!--設置使用開發模式--> <constant name="struts.devMode" value="true" /> </struts>
Struts2 所支持的常量數量不少,在 struts2-core-2.3.37.jar 壓縮文件的 org/apache/struts2 路徑下有一個 default.properties 文件,該文件裏爲 Struts2 的全部常量都指定了默認值。插件
除了能夠經過上述的三種方式配置常量之外,在 Struts2 內置的一些配置文件中也有對常量的配置。
所以,若是在多個文件中配置了同一個 Struts2 常量,則 Struts2 框架加載常量是有必定順序的,一般的搜索順序以下。
1)default.properties:該文件保存在 struts2-core-2.3.37.jar 中的 org.apache.struts2 包中。 2)struts-default.xml:該文件保存在 struts2-core-2.3.37.jar 文件中。 3)struts-plugin.xml:該文件保存在 struts-Xxx-2.3.37.jar 等 Struts2 插件 JAR 包中。 4)struts.xml:該文件是 Web 應用自身的 Struts2 配置文件。 5)struts.properties:該文件是 Web 應用默認的 Struts2 配置文件。 6)web.xml:該文件是 Web 應用的配置文件。
上面指定了 Struts2 框架搜索 Struts2 常量的順序,須要注意的是,若是在多個文件中配置了同一個 Struts2 常量,則後一個文件中配置的常量值會覆蓋前面文件中配置的常量值。
包配置
在 Struts2 框架中,包用於管理 Action 和攔截器,每一個包就是多個 Action、多個攔截器、多個攔截器引用的集合。
在 struts.xml 文件中,使用 <package> 元素定義包配置,每一個 <package> 元素都定義了一個包配置。
<package name="default" namespace="/" extends="struts-default"> ... </package>
屬性:
- name:必填屬性,用於指定該包的名稱(該名稱在配置文件中必須是惟一的),此名稱是該包被其餘包引用的 Key。
- namespace:可選屬性,用於定義該包的命名空間。
- extends:可選屬性,用於指定該包繼承自其餘包。其屬性值必須是另外一個包的 name 屬性值,但該屬性值一般都設置爲 struts-default,這樣該包中的 Action 就具備了 Struts2 框架默認的攔截器等功能。
包含配置
Struts2 容許將一個配置文件分解成多個配置文件,從而提升配置文件的可讀性,<include> 元素用於在一個 struts.xml 配置文件中包含其餘的配置文件。
Struts2 默認只加載 WEB-INF/classes 下的 struts.xml 文件,一旦經過多個 XML 文件配置 Action,就必須經過 <include> 元素包含其餘配置文件。
在 struts.xml 文件中包含配置:
<struts> <!--不指定路徑,默認在src下時的方式--> <include file="struts-post.xml"/> <include file="struts-user.xml"/> <include file="struts-dept.xml"/> <!--配置文件在具體包中時的方式--> <include file="com/mengma/action/struts-product.xml"/> </struts>
struts.xml 文件經過 <include> 元素包含了四個配置文件,其中 file 屬性用於指定被包含配置文件的名稱。若是被包含的配置文件在 src 路徑下,則直接指定文件名便可,若是被包含的配置文件在具體的包中,則須要引入被包含文件的包路徑。
須要注意的是,每個被包含的配置文件都是標準的 Struts2 配置文件,一樣包含 DTD 信息、Struts2 配置文件的根元素等信息。因爲 struts.xml 文件包含了其餘的配置文件,因此在 Struts2 框架自動加載 struts.xml 文件時,就會完成全部配置信息的加載。