隨着Web應用程序的增長,所需的Action也會更多,從而致使大量的action映射,使用通配符能夠減小action配置的數量,使一些具備相似行爲的Action或者Action方法可使用通用的樣式來配置。 框架
通配符即星號(*),用於匹配0個或多個字符,在配置action時,能夠在action元素的name屬性中使用星號(*)來匹配任意的字符。 less
如下是在action映射中使用通配符:
<actionname="news*" jsp
class="org.struts2.lesson05.News{1}Action"> spa
<resultname="success">/WEB-INF/News/{1}.jsp</result> it
</action> io
咱們在action元素的name屬性中使用了通配符(*),容許這個映射匹配全部以/news開始的URL,例如/newsAdd,/newsEdit,/newsDelete,可是,若是請求的是/newsEdit/add,那麼這個映射就不會被匹配。 class
在上面,有一個特殊的記號{1},這是做爲佔位符使用的,它將被通配符所匹配的值替換,例如訪問/newsEdit,通配符(*)匹配的部分是Edit,那麼,這個值將替換{1},最終調用的類是org.struts2.lesson05.NewsEditAction,Action struts2
執行成功後導向的結果頁面是/WEB-INF/News/Edit.jsp。 配置
在action映射和action結果中,通配符匹配的值能夠用記號{N}來訪問,N是從1到9的數字,指出替換的是哪個通配符匹配的值。整個請求URL能夠用記號{0}來訪問。例如以下的action映射:
<actionname="*_*"class="org.struts2.lesson05.{1}Action" sso
method="{2}">
<result>/WEB-INF/News/{0}.jsp</result>
</action>
當訪問/News_delete時,name屬性中的第一個」*」匹配News,第二個」*」匹配delete,class屬性中使用的記號是{1},因此被News所替換,method屬性中使用的記號是{2},因而被delete所替換。結果映射中使用的記號是{0},因而被整個URL替換,即News_delete所替換。整個替換後的結果是:當請求/News_delete時,框架調用NewsAction實例的delete方法對請求進行處理。執行成功後,請求被導向到/WEB-INF/News/News_delete.jsp頁面。
通配符方法設置的另外一種常見方式是使用後綴通配符,即將」*」放在action名字的後面,在」*」和名字前綴之間使用一個特殊字符做爲分隔,經常使用的特殊字符是下劃線(_),固然也可使用其餘字符。例如:
<actionname="News_*"
class="org.struts2.lesson05.NewsAction"method="{1}">
<result>/WEB-INF/News/{0}.jsp</result>
</action>
當請求/News_delete時,調用的是NewsAction實例的delete方法,當請求/News_edit的時候,調用的是NewsAction實例的edit方法。