Struts 2 的action配置

jopen 8年前發布 | 12K 次閱讀 Struts2 Web框架

          當實現Action處理類后,我們就可以在struts.xml文件中配置該Action了。配置Action的目的就是讓Struts 2知道哪個Action處理哪個請求。也就是完成用戶請求和Action之間的對應關系。

           在 Action 映射中可以指定 result types 、異常處理器及攔截器,但是,只有 Action 的 name 屬性是必需指定的,該屬性石引用該包的唯一標識。其他屬性也可以在 package 范圍內進行定義,供該 package 下配置的所有 Action 引用

     

         1、包和命名空間

           Struts 2使用包來組織、管理Action。定義Action通過使用<package.../>下的<action.../>子元素來完成。

          在struts.xml文件中,<package.../>元素用于定義包配置。每個<package.../>元素定義了一個包配置。它有如下屬性:

           Struts 2之所以提命名空間主要是為了處理同一個Web應用中包含同名Action的情形。由于Struts 2以包的形式來管理Action,故同一個包里面不能有同名的Action

           如果配置<package.../>時沒有指定namespace屬性,則該包下的所有Action都處于默認的包空間下。

           有如下struts.xml配置

 

<package name="mystruts1" extends="struts-default">
        <action name="*Action" class="com.action.LoginAction" >
            ......
        </action>
    </package>
    <!-- 配置名為mystruts2,該包繼續了Struts 2的默認包,指定命名空間為/book  -->
    <package name="mystruts2" extends="struts-default" namespace="/book">
        <action name="getBooks" class="com.action.GetBooksAction">
            ......
        </action>
    </package>

           當某個包指定了命名空間后,該包下所有的Action處理的URL應該是命名空間+Action名。如:

           http://localhost:8080/struts_05/book/getBooks.action 

           Struts_05為應用名;book是該Action所在包對應的命名空間,而getBooksAction

 

           2、Action的基本配置

           除了上面的配置外,我們還要指定一個class屬性。該屬性指定了該Action的實現類。如果沒有指定該屬性,系統就會默認使用系統的ActionSupport類。

           我們在配置<action.../>時,還可以為它指定method屬性。該屬性指定Action調用指定方法。

<action name="login" class="com.app.action.LoginAction" method="login" />

            上面實例定義了一個名為loginActionmethod屬性指定了處理用戶請求的方法為login

           當然也可以不用指定method屬性。系統會默認調用execute方法來處理用戶請求。

           處理用戶請求的方法都應該存在一個相同的方法簽名:方法形參列表為空,方法返回值為string 

<!-- 配置名為mystruts1,處理類LoginAction 默認使用execute方法處理請求 -->
    <package name="mystruts1" extends="struts-default">
        <action name="*Action" class="com.action.LoginAction" >
            ......
        </action>
    </package>
    <!-- 配置名為mystruts2,處理類為GetBooksAction,指定處理方法為getBooks -->
    <package name="mystruts2" extends="struts-default" >
        <action name="getBooks" class="com.action.GetBooksAction" method="getBooks">
            ......
        </action>
    </package>   

 

          3、配置處理結果

          Action只是一個邏輯控制器,它并不直接對瀏覽者生產任何響應。因此,Action處理完用戶請求后,Action需要將指定的試圖資源呈現給用戶。因此,配置Action時,應該配置邏輯試圖和物理視圖資源之間的對應關系。  

           結果配置是告訴Struts 2:當Action處理用戶請求結束后,系統下一步做什么,系統下一步應該調用哪個物理視圖資源來顯示處理結果。

          配置<result.../>元素時一般需要指定如下兩個屬性:



          <result.../>元素配置如下:

<action name="login" class="com.app.action.LoginAction>
    <!-- 為success的邏輯視圖配置Result。type屬性指定結果類型  --->
     <result name="success" type="dispatcher">/welcome.jsp</result>
 </action>  


          一般情況下,Struts 2允許省略指定結果類型

<action name="login" class="com.app.action.LoginAction>
    <!-- 為success的邏輯視圖配置Result。省略type  --->
     <result name="success">/welcome.jsp</result>
 </action> 

          Struts 2 還可以省略邏輯試圖名name屬性

<action name="login" class="com.app.action.LoginAction>
    <!-- 為success的邏輯視圖配置Result。省略type、name  --->
     <result >/welcome.jsp</result>
 </action> 

          如果我們省略了<result.../>元素的name屬性,系統將會采用默認的name屬性值,默認的name屬性值為success.

     
           讀李剛《輕量級Java EE 企業應用實戰》

 

                           

 

 

 

 

 

                

來自: http://blog.csdn.net/chenssy/article/details/7310903

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!