、 Action通配符(wildcard)的配置
使用通配符,將配置量降到最低, 不過,一定要遵守"約定優於配置"的原則
1、 通配符
星號(*) 表示所有
{數字} 表示第幾個通配符
例如:Student* 那麼{1}代表第一個星號(*)
*_* 那麼{1}代表第一個星號(*) ,{2}代表第二個星號(*)
[html]
<package name="actions" extends="struts-default" namespace="/actions">
<action name="Student*" class="com.bjsxt.struts2.action.StudentAction" method="{1}">
<result>/Student{1}_success.jsp</result>
</action>
<action name="*_*" class="com.bjsxt.struts2.action.{1}Action" method="{2}">
<result>/{1}_{2}_success.jsp</result>
<!-- {0}_success.jsp -->
</action>
</package>
<package name="actions" extends="struts-default" namespace="/actions">
<action name="Student*" class="com.bjsxt.struts2.action.StudentAction" method="{1}">
<result>/Student{1}_success.jsp</result>
</action>
<action name="*_*" class="com.bjsxt.struts2.action.{1}Action" method="{2}">
<result>/{1}_{2}_success.jsp</result>
<!-- {0}_success.jsp -->
</action>
</package>
解釋:第一個Action的名稱為name=”Student*” method=”{1}”,表示所有Action以Student開始的都會執行這個Action,並且執行Student後字符為方法名的方法,例如:訪問的Action為Studentadd,會執行這個Action(Student*),並且執行add的方法.因為{1}在這裡代表add,並且返回/Studentadd_success.jsp頁面。
第二個Action的名稱name=”*_*” method=”{2}” class=”…action.{1}Action” 表示所有Action中包含下劃線(“_”)都會執行這個Action,例如:Teacher_add,那麼會執行這個Action,並且Action對應的類為TeacherAction,且執行Action中的add方法,返回結果頁面為/Teacher_add_success.jsp,因為在這裡的{1}表示Teacher,{2}表示add
1、 匹配順序
當匹配的Action有兩個以上時,則會按匹配精確度高的那個Action,當有個相同的匹配精確度時,則按先後順序進行。