struts.xml配置


struts.xml 是 Struts2 框架的核心配置文件,該文件主要用於配置 Action 和請求的對應關系,以及配置邏輯視圖和物理視圖(邏輯視圖就是在 struts.xml 文件中配置的 <result> 元素,它的 name 屬性值就是邏輯視圖名;物理視圖是指 <result> 元素中配置的結果頁面,如 JSP 文件)資源的對應關系。

存放路徑:struts.xml 文件通常放在 Web 應用的 WEB-INF/classes 目錄下,在該目錄下的 struts.xml 文件可以被 Struts2 框架自動加載。由於 MyEclipse 開發工具在編譯時會自動將 src 路徑下的 struts.xml 文件編譯后放到 WEB-INF/classes 路徑下,所以直接將其放到項目的 src 路徑下即可。

<?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> 元素:用於進行常量配置。

● <package> 元素:用於進行包配置,在 Struts2 框架中,包用於組織 Action 和攔截器等信息,每個包都是由零個或多個攔截器以及 Action 所組成的集合。

● <include> 元素:用於在一個 struts.xml 配置文件中包含其他的配置文件。

1. 常量配置

在使用 Struts2 框架開發的項目中,通常需要使用大量的常量,這些常量大多在默認的配置文件中已經配置好,但由於用戶的需求不同,開發的要求也有所不同,這時可能就需要對這些常量值進行修改,其修改的方法就是在配置文件中對常量進行重新配置。

通常使用的三種方式:

  • 在 struts.xml 文件中使用 <constant> 元素配置常量(常用方式)。
  • 在 struts.properties 文件中配置常量。
  • 在 web.xml 文件中通過 <init-param> 元素配置常量。

在 struts.xml 文件中通過 <constant.../> 元素配置常量時,需要指定兩個必填的屬性 name 和 value。其中 name 屬性用於指定常量的常量名,value 屬性用於指定常量的常量值。

<!-- 配置了常量 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 常量,則后一個文件中配置的常量值會覆蓋前面文件中配置的常量值。

2. 包配置

在 Struts2 框架中,包用於管理 Action 和攔截器,每個包就是多個 Action、多個攔截器、多個攔截器引用的集合。

在 struts.xml 文件中,使用 <package> 元素定義包配置,每個 <package> 元素都定義了一個包配置。

<package name="default" namespace="/" extends="struts-default">
    ...
</package>

屬性:

  • name:必填屬性,用於指定該包的名稱(該名稱在配置文件中必須是唯一的),此名稱是該包被其他包引用的 Key。
  • namespace:可選屬性,用於定義該包的命名空間。
  • extends:可選屬性,用於指定該包繼承自其他包。其屬性值必須是另一個包的 name 屬性值,但該屬性值通常都設置為 struts-default,這樣該包中的 Action 就具有了 Struts2 框架默認的攔截器等功能。

3. 包含配置

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 文件時,就會完成所有配置信息的加載。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM