Struts 2 通配符的使用

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

          在我們配置Action時,發現struts.xml中的<action…/>的絕大部分都相同。這時我們可以通過使用struts 2 提供的通配符映射機制來處理這個問題。

          我們在配置<action …./>時,允許在指定name屬性時使用模式字符串(即用“*”來代替一個或多個任意字符),接下來就可以再classmethod屬性和<result…/>中使用{N}的形式來代表前面第幾個*所代表是字符。

          1、 當我們在Actionname屬性中使用通配符后,可以用一個<action../>元素代替多個邏輯Action   

<action name="*action" class="com.app.action.LoginAction" method="{1}">


         上面定義了一個一系列的邏輯Action。即只要用戶請求的URL=*Action模式,都可以使用該Action。對于method屬性,使用的是:{1}。表示該表達式的值就是name屬性值中的第一個*的值。如用戶請求的URLRegistAction。則調用RegistAction類中的regist方法。

 

          2、 <action .../>class屬性也可以使用{N}表達式。即struts 2允許將一系列的Action配置成一個<action .../>元素。相當于一個<action .../>元素配置了多個邏輯Action

<action name="*Action" class="com.app.action.{1}Action">

            

           上面的struts.xml中 class屬性值使用了{N}形式的表達式。這個表達式表示了:如果RULLoginAction的請求,其中第一個*Login,即這個Action的處理類為LoginAction。指定處理方法為默認的execute()方法

    

      根據上面的描述:可以判斷下面的struts.xml的配置

<actiion name="*_*" method="{1}" class="com.app.actions.{2}" >


     上面的Action模式為**_*,所以只要匹配了這個模式的請求,都可以被該Action處理。如果有一個URLRegist_Login.action。因為匹配了*_*請求,而且第一個*Regist,第二個為Login。則意味著調用com.app.action.Login處理類的Regist方法來處理這個請求。

  

 

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

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