在配置<action …./>元素時,需要指定name,class和method屬性,這三個屬性都支持通配符。
例如:
1.<action name = ”*Action” class = “student.RegisterAction” method = “{1}”>
如果用戶請求的URL為loginAction.action,則調用student.RegisterAction中的login()方法
2.<action name=”*Action” class = “student.{1}Action”>
如果用戶請求的URL為loginAction.action,則調用student.LoginAction中的execute(),因為沒有指定method屬性,既總是使用execute方法來處理用戶請求。
3.<action name = ”*_*” method = “{2}” class=”actions.{1}”>
如果用戶請求為Book_save.action,則調用Book處理類的save()方法來處理用戶請求
4.<action name=”*”><result>/{1}.jsp</result></action>
改action匹配任意的Action,即所有的用戶請求都可以通過該Action來處理。因為沒有為該action指定class屬性,即該action使用ActionSupport來作為處理類,而且因為該ActionSupport類的execute()返回的的success字符串,即該action總是直接返回result中指定的jsp資源。
當使用通配符配置action時,會經常出現一個action請求符合多個action的情況。此時會先在Struts.xml文件中查找同名的action(沒有使用匹配符),則一定由該Action來處理用戶請求。如果沒有則查找帶有匹配符的action,此時是先找到那個符合的action由那個進行處理。
即除非請求的URL與action的name屬性絕對相同,否則將按先后順序來決定哪個action來處理用戶請求。因此,應該將名為*的action配置在最后,否則struts2將使該action來處理所有希望使用模式匹配的請求