struts2通配符的使用

通配符映射框架

      隨着Web應用程序的增長,所需的Action也會更多,從而致使大量的action映射,使用通配符能夠減小action配置的數量,使一些具備相似行爲的Action或者Action方法可使用通用的樣式來配置。less

      通配符即星號(*),用於匹配0個或多個字符,在配置action時,能夠在action元素的name屬性中使用星號(*)來匹配任意的字符。             jsp

如下是在action映射中使用通配符:spa

<action name="news*"  class="org.struts2.lesson05.News{1}Action">

      <result name="success">/WEB-INF/News/{1}.jsp</result>

   </action>

      咱們在action元素的name屬性中使用了通配符(*),容許這個映射匹配全部以/news開始的URL,例如/newsAdd,/newsEdit,/newsDelete,可是,若是請求的是/newsEdit/add,那麼這個映射就不會被匹配。code

      在上面,有一個特殊的記號{1},這是做爲佔位符使用的,它將被通配符所匹配的值替換,例如訪問/newsEdit,通配符(*)匹配的部分是Edit,那麼,這個值將替換{1},最終調用的類是org.struts2.lesson05.NewsEditAction,Actionit

   執行成功後導向的結果頁面是/WEB-INF/News/Edit.jsp。      action映射和action結果中,通配符匹配的值能夠用記號{N}來訪問,N是從19的數字,指出替換的是哪個通配符匹配的值。整個請求URL能夠用記號{0}來訪問。例如以下的action映射:
     io

<action name="*_*" class="org.struts2.lesson05.{1}Action"  method="{2}">

     <result>/WEB-INF/News/{0}.jsp</result>

</action>

      當訪問/News_delete時,name屬性中的第一個」*」匹配News,第二個」*」匹配deleteclass屬性中使用的記號是{1},因此被News所替換,method屬性中使用的記號是{2},因而被delete所替換。結果映射中使用的記號是{0},因而被整個URL替換,即News_delete所替換。整個替換後的結果是:當請求/News_delete時,框架調用NewsAction實例的delete方法對請求進行處理。執行成功後,請求被導向到/WEB-INF/News/News_delete.jsp頁面。class

      通配符方法設置的另外一種常見方式是使用後綴通配符,即將」*」放在action名字的後面,在」*」和名字前綴之間使用一個特殊字符做爲分隔,經常使用的特殊字符是下劃線(_),固然也可使用其餘字符。例如:               struts2

<action name="News_*" class="org.struts2.lesson05.NewsAction" method="{1}">

      <result>/WEB-INF/News/{0}.jsp</result>

</action>

       當請求/News_delete時,調用的是NewsAction實例的delete方法,當請求/News_edit的時候,調用的是NewsAction實例的edit方法。配置