最完整的struts.xml骨架

衆所周知,struts.xml是整個Struts2框架的核心!下面提供一個struts.xml文件示範(無任何實際意義,struts版本2.3),方便以後使用!
廢話不多說,直接上代碼,代碼如下:

<?xml version="1.0" encoding="UTF-8" ?>
<!--指定了Struts2.3配置文件的DTD(DTD文件位置:WEB-INF\lib\struts2-core-2.3.31.jar\struts-2.3.dtd)信息 -->
<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
    "http://struts.apache.org/dtds/struts-2.3.dtd">
<!--struts是Struts2配置文件的根元素 -->
<!-- 屬性解釋:order指定加載struts2配置文件的優先順序 -->
<struts order="">
    <!--content元素可出現0或者無數次 用於設置一些struts2的常量-->
    <constant name="" value=""/>
    <!--bean元素可出現0或者無數次  struts2框架內置bean位置(WEB-INF\lib\struts2-core-2.3.31.jar\struts-default.xml) 
    bean作用:--重新定義struts2框架的核心組件,很少使用!
    1.創建Bean的實例(實現了接口的類的實例),將實例作爲Struts框架的核心組件使用
    2.Bean包含的靜態方法需要注入一個值(允許不出案件某個類的實例 通常設置static="true")
    -->
    <!-- 屬性解釋:
    type:可選屬性,屬性值通常是一個struts2接口 
    name:可選屬性,指定了bean實例的名字,若type值相同,name名不能相同
    scope:可選屬性,bean實例的作用域 屬性值:default singleton request session 或 thread
    static:指定bean是否使用靜態方法注入 指定了type屬性 該屬性不能指定爲true
    optional:可選屬性 指定bean是否是一個可選bean-->
    <bean type="" name="" class="" scope="" optional="" static=""></bean>
    <!-- include元素可出現0或者無數次 
    作用:包含其他配置文件
    屬性解釋:
    file:必填屬性 制定了被包含配置文件(是標準的struts2配置文件)的文件名
    -->
    <include file="" />
    <!-- package元素是Struts配置問價的核心,可出現0或者無數次 
    作用:管理action和攔截器(攔截器 攔截器引用)
    每個包是多個action 多個攔截器 多個攔截器引用組成-->
    <!-- 屬性解釋:
    name:必填屬性 指定該包的名字 此名字是該包被其他包引用的key
    extends:可選屬性 指定該包繼承其他包 (繼承內容action定義和攔截器定義)
    父包應該在子包前面定義(因爲struts2配置文件從上到下處理,可通過order來指定加載順序)
    namespace:可選屬性 該屬性定義該包的命名空間
        關於命名空間:考慮到一個web應用中可能會出現相同的action,所以struts2以命名空間
        來管理action 同一個命名空間不能有同名action 不同命名空間可以有相同action
        若沒有指定namespace則使用默認命名空間""(默認命名空間可處理任何模塊下的action請求);
        若指定以後namespace後 action處理類的URL爲命名空間+action名
            關於根命名空間(namespace="/")
            假設請求爲/login.action
            系統先去根命名空間("/")中找login的action,若找到該action處理用戶請求,若找不到就進入
            默認命名空間("")中找login的action,若找到該action處理用戶請求,若找不到,提示出錯!
    abstract:可選屬性 指定該包是不是抽象包(抽象包不能有action) -->
    <package name="包名" extends="" namespace="" abstract="" externalReferenceResolver="" strict-method-invocation="">
        <!-- result-types元素可有可無 最多出現一次 -->  
        <result-types>
            <!-- result-type元素必須出現   可出現無數次 -->
            <result-type name="" class="" default="false|true">
                <!-- param元素可出現0或者無數次 -->
                <param name="參數名">參數值</param>
            </result-type>
        </result-types>
        <!-- interceptors元素可有可無,最多出現一次   包含攔截器和攔截器棧-->
        <interceptors>
            <!-- interveptors元素的interceptor元素和interceptor-stack元素至少出現其中之一 也可以同時出現 -->
            <!-- interceptor(攔截器)元素可以出現0或者無數次
            攔截器執行時間:Action處理之前,或者Action處理之後
            攔截器作用:
                權限控制(檢查用戶是否登錄)
                跟蹤日誌(記錄每個瀏覽者所請求的每個action)
                性能優化(記錄每個action的開始處理時間和結束處理時間)-->
            <!-- 屬性解釋:
            name:攔截器的名字
            class:攔截器的處理類 -->
            <interceptor name="" class="">
                <!-- param可以出現0或者無數次 -->
                <param name="參數名">參數值</param>
            </interceptor>
            <!-- interceptor-stack(攔截器棧(多個攔截器形成一個攔截器棧,是一個大的攔截器,定義攔截器棧之前,必須先定義攔截器))可以出現0或者無數次 -->    
            <!-- 屬性解釋:
            name:攔截器棧的名字 -->
            <interceptor-stack name="">
                <!-- interceptor-ref元素必須出現 可出現無數次 
                作用:定義攔截器棧包含哪個攔截器-->
                <!-- 屬性解釋:
                name:已經定義好的攔截器的名字 -->
                <interceptor-ref name="">
                    <!-- param可以出現0或者無數次 -->
                    <param name="參數名">參數值</param>
                </interceptor-ref>
            </interceptor-stack>    
        </interceptors>
        <!-- default-class-ref元素可以出現0或者無數次 
        作用:改變action的默認處理類(action的默認處理類是ActionSupport)-->
        <!-- 屬性解釋:
        class:action的處理類 -->
        <default-class-ref class="">
            <!-- param元素可以出現0次或者無數次 -->
            <param name="參數名">參數值</param>
        </default-class-ref>
        <!-- default-interceptor-ref元素可以出現0或者無數次 -->
        <default-interceptor-ref name="">
            <!-- param元素可以出現0次或者無數次 -->
            <param name="參數名">參數值</param>
        </default-interceptor-ref>
        <!-- default-action-ref元素可以出現0或者無數次 
        作用:當用戶請求的URL在容器中找不到對應的action時,系統使用默認的action來處理用戶請求  需要和action元素結合使用-->
        <!-- 屬性解釋
        name:事先定義好的action的名字 -->
        <default-action-ref name="">
            <!-- param元素可以出現0次或者無數次 -->
            <param name="參數名">參數值</param>
        </default-action-ref>
        <!-- global-results(全局結果)元素可以出現0或者無數次 
        作用:對所有的action都有效
        若全局結果裏包含了和局部結果同名的結果,局部會覆蓋全局(以局部結果爲準)-->
        <global-results>
            <!-- result元素必須出現 可以出現無數次 -->
            <result name="" type="">
                <!-- param元素可以出現0次或者多次 -->
                <param name="參數名">參數值</param>
            </result>
        </global-results>
        <!-- global-exception-mappings元素可以出現0或者無數次 -->
        <global-exception-mappings>
            <!-- exception-mapping(全局異常映射,對所有action都有效,當和局部異常一樣時,以局部異常爲準)元素必須出現 可以出現無數次
            作用:struts2框架的異常捕捉機制-->
            <!--屬性解釋:
            exception:此屬性指定該異常映射所設置的異常類型
            result:指定action出現該異常時,系統轉入reslut屬性所指向的結果  -->
            <exception-mapping result="" exception="">
                <!-- param元素可以出現0次或者多次 -->
                <param name="參數名">參數值</param>
            </exception-mapping>
        </global-exception-mappings>
        <!-- struts2的核心,配置action的作用就是讓容器知道該Action存在 -->
        <!-- 屬性解釋:
        name:action的名字 
            命名規範: 通常由字母和數字組成
            若name=""時,可處理列出web應用根路徑下的所有文件請求
        class:可選屬性 指定了該action的實現類(若沒有指定,使用系統默認的ActionSupport)
        method:可以讓action類調用指定方法,而不是execute方法來處理用戶請求  默認值execute-->
        <action name="" class="" converter="" method="">

            <!-- param元素可以出現0次或者多次 -->
            <param name="參數名">參數值</param>
            <!-- result(局部結果)元素可以出現0次或者多次
            作用:配置邏輯視圖(普通的字符串)和物理視圖(JSP Velocity FreeMarker等)之間的關係 -->
            <!-- 屬性解釋:
            name:可選屬性 默認值是success(不寫name屬性,默認爲success) 
            type:可選屬性 默認值是dispatcher(不寫type屬性,默認爲dispatcher)
                type的值(struts2內建支持的結果類型):
                    chain:action鏈式處理的結果類型
                        不想轉發到視圖資源,希望另一個action進行下一步處理,將請求轉發到另一個action
                    dispatcher:與jsp整合的結果類型
                        將請求轉發(Forward)到指定的視圖資源
                    freemarker:與FreeMarker整合的結果類型
                    httpheader:用於控制特殊HTTP行爲的結果類型
                    redirect:直接跳轉到其他URL的結果類型
                        將請求Redirect(重定向)到指定視圖資源,丟失所有的請求參數,請求屬性,action的處理結果
                    redirectAction:直接跳轉到其他action的結果類型
                        直接將請求重定向到另外一個action,丟失所有的請求參數,請求屬性,action的處理結果
                    stream:向瀏覽器返回一個InputStream的結果類型(用於文件下載)
                    velocity:與Velocity整合的結果
                    xslt:用於與XML/XSLT整合的結果類型
                    plainText:用於顯示某個頁面的原始代碼的結果類型(不常用)-->
            <result name="" type="">
                <!-- param元素可以出現0次或者多次 -->
                <!-- 屬性解釋:
                name:參數的值
                    location:指定了該邏輯視圖對應的實際的視圖資源
                    parse:指定是否允許在實際視圖名字中使用OGNL表達式  默認爲可以使用(true) 
                    charSet(type="plainText"時使用):指定字符集,使用特定的字符集來處理頁面                    
                    actionName(type="redirectAction"時使用):指定重定向的actionName
                    nameSpace(type="redirectAction"時使用):指定重定向的Action所在的命名空間
                    -->
                <param name="參數名">參數值</param>
            </result>
            <!-- interceptor-ref元素可以出現0次或者多次 
            作用:使用攔截器或者攔截器棧-->
            <!-- 屬性解釋:
            name:已經定義好的攔截器棧或者攔截器的名字 -->
            <interceptor-ref name="" >
                <!-- param元素可以出現0次或者多次 -->
                <param name="參數名">參數值</param>
            </interceptor-ref>
            <!-- exception-mapping(局部異常映射)元素可以出現0次或者多次 
            作用:struts2的異常機制-->
            <!--屬性解釋:
            exception:此屬性指定該異常映射所設置的異常類型
            result:指定action出現該異常時,系統轉入reslut屬性所指向的結果  -->
            <exception-mapping result="" exception="" name="">
                <!-- param元素可以出現0次或者多次 -->
                <param name=""></param>
            </exception-mapping>
            <!-- allowed-methods元素可以出現0次或者多次 -->
            <allowed-methods></allowed-methods>
        </action>
    </package>
    <!-- unknown-handler-stack可以出現0或者無數次
    作用:用於配置Struts2的未知處理器(從Struts2.1開始)
    未知處理器的起作用的時刻 :用戶請求未知action 指定action的未知方法 action處理結束返回未知result時-->
    <unknown-handler-stack>
        <!-- unknown-handler-ref可以出現0或者無數次 -->
        <!-- 屬性解釋:
        name:bean的name(這個Bean定義了一個UnknowHandler) -->
        <unknown-handler-ref name="" ></unknown-handler-ref>
    </unknown-handler-stack>
</struts>

不足之處,望指點!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章