1. 程式人生 > >Struts2筆記(三)、struts.xml配置

Struts2筆記(三)、struts.xml配置

1、package配置

<package name="default" namespace="/test" extends="struts-default">
        <action name="login" class="com.project.actions.LoginAction" method="execute">
            <result name="success" type="redirect">/success.html</result>
            <result name="fail"
>
/fail.html</result> </action> </package>

name屬性:配置包時必須有name屬性,該屬性值可以隨意取名,但是必須唯一,與java中包和類無關係,若有其他包要繼承該包,就必須使用這個名字。
namespace屬性:用於定義該包的名稱空間,名稱空間是訪問該包下action路徑的一部分,該屬性是必須的,且不能為空。
注:名稱空間可以改為"/"

2、action配置

一般會訪問伺服器的action,由action來跳轉檢視

<package name="default" namespace
="/test" extends="struts-default">
<action name="login" class="com.project.actions.LoginAction" method="execute"> <result name="success" type="redirect">/success.html</result> </action> <!-- 不需要加上class屬性也可以訪問訪問 --> <action name
="register">
<result name="success">/success.html</result> </action> </package>
<a href="test/register">註冊</a>

注:為什麼不需要class屬性也可以訪問到success頁面呢
找到strurs-default.xml檔案
.xml
method屬性:指定要執行的方法。如果不寫,預設執行execute()

3、result配置

<package name="default" namespace="/test" extends="struts-default">
        <action name="login" class="com.project.actions.LoginAction">
            <result>/success.html</result>
        </action>
</package>

name:如果不指定預設值"success"
type: strurs-default.xml定義了所有的type
在這裡插入圖片描述
這裡的result-type比較重要,下面一一說明:

1、dispatcher

它代表的是請求轉發,也是預設值。一般用於action跳轉頁面。該結果型別有一個location引數,它是一個預設引數

<action name="register" class="com.project.actions.RegisterAction">
     <result name="success" type="dispatcher">/show.jsp</result>
</action>
<result name="success" type="dispatcher">
     <param name="location">/show.jsp</param>
</result>

2、redirect

重定向,用於action跳轉到頁面。
location: 用來給出重定向的目的地

<action name="AddAction" class="com.project.actions.AddAction">
        <result name="success" type="redirect">
            <param name="location">/show.jsp</param>
        </result>
</action>

3、redirectAction

重定向,一個action跳轉到另一個action
actionName: 指定 “目的地” 動作的名字. 它是預設屬性
namespace: 用來指定 “目的地” 動作的名稱空間. 如果沒有配置該引數, Struts 會把當前 Action 所在的名稱空間作為 “目的地” 的名稱空間

<!-- action到action跳轉 -->
    <action name="FirstAction" class="com.project.actions.FirstAction">
        <result name="success" type="redirectAction">
            <param name="actionName">SecondAction</param>
            <param name="uname">${name}</param>
            <param name="upwd">${pwd}</param>
        </result>
    </action>

    <action name="SecondAction" class="com.project.actions.SecondAction">
        <result name="success" type="dispatcher">
            <param name="location">/success.html</param>
        </result>
    </action>

4、chain

相當於請求轉發,用於從一個action跳轉到另一個action

<action name="FirstAction" class="com.project.actions.FirstAction">
        <result name="success" type="chain">
            <param name="actionName">SecondAction</param>
        </result>
    </action>

    <action name="SecondAction" class="com.project.actions.SecondAction">
        <result name="success" type="dispatcher">
            <param name="location">/show.jsp</param>
        </result>
</action>

4、全域性檢視

包範圍的全域性檢視

<package>
    <action name="result" class="cn.itcast.struts2.demo6.ResultAction">
                <!-- 區域性結果  當前Action使用 -->
                <result name="success">/demo6/result.jsp</result> 
    </action>

    <global-results>
                <!-- 全域性結果 當前包中 所有Action都可以用-->
                <result name="success">/demo6/result.jsp</result>
    </global-results>
</package>

應用範圍的全域性配置
利用繼承的方式來實現,abstract=true 表示抽象,當前package不能寫action
在這裡插入圖片描述

5、為應用指定多個xml檔案

在開發中strus.xml檔案中寫的action越來越多,以後維護起來很麻煩,為了方便,將struts.xml檔案拆分為多個檔案,在包含在一起
在這裡插入圖片描述
struts-action

 <struts>
    <package name="default" namespace="/test" extends="base">
        <action name="login" class="com.project.actions.LoginAction" method="execute">
        </action>
    </package>
</struts>

struts-base

<struts>   
    <package name="base" extends="struts-default" abstract="true">
        <global-results>
             <!-- 全域性結果 當前包中 所有Action都可以用-->
             <result name="success">/success.html</result>
             <result name="fail">/fail.html</result>
        </global-results>
    </package>
</struts>

struts.xml

<struts>
    <include file="struts-base.xml"/>
    <include file="struts-action.xml"/>
</struts>

注意:因為include包含屬於靜態包含,所以包含的內容不能衝突。