通配符映射框架
隨着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是從1到9的數字,指出替換的是哪個通配符匹配的值。整個請求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,第二個」*」匹配delete,class屬性中使用的記號是{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方法。配置