struts2中action中的通配符

struts中一个正常的最普通不过的action是这样子的

1 <package name="default1" namespace="/gys" extends="struts-default">
2         <action name="registAction" class="com.b.Regist" method="test">
3             <result name="regist1">/1/regist1.jsp</result>
4             <result name="regist2">/1/regist2.jsp</result>            
5         </action>
6     </package>    

使用通配符1

1 <package name="default1" namespace="/gys" extends="struts-default">
2         <action name="*Action" class="com.b.Regist" method="test">
3             <result name="regist1">/1/regist1.jsp</result>
4             <result name="regist2">/1/regist2.jsp</result>            
5         </action>
6  </package>    

action中的*会和你的请求路径想匹配.符合要求的就进行下一步执行.*表示长度不为0的字符.

比如:insertAction,updateAction都是符合要求的.

使用通配符2

1 <package name="default1" namespace="/gys" extends="struts-default">
2         <action name="*Action" class="com.b.Regist" method="{1}">
3             <result name="regist1">/1/regist1.jsp</result>
4             <result name="regist2">/1/regist2.jsp</result>            
5         </action>
6     </package>    

这里method="{1}"表示通配符的占位符.

占位符都是从1开始的,不是从零考试的.

使用通配符3

1 <package name="default1" namespace="/gys" extends="struts-default">
2         <action name="*_*Action" class="com.b.{2}" method="{1}">
3             <result name="regist1">/1/regist1.jsp</result>
4             <result name="regist2">/1/regist2.jsp</result>            
5         </action>
6     </package>    

这里的{2}表示的就是第二个*了

使用通配符4

1 <package name="default1" namespace="/gys" extends="struts-default">
2         <action name="*_*_*Action" class="com.b.{2}" method="{1}">
3             <result name="{3}">/1/{3}.jsp</result>
4             <result name="{3}">/1/{3}.jsp</result>            
5         </action>
6     </package>    

通配符还可以进行内部的占位符的匹配

使用通配符5

 1 <package name="default1" namespace="/gys" extends="struts-default">
 2         <action name="registAction" class="com.b.Regist" method="test">
 3             <result name="regist1">/1/regist1.jsp</result>
 4             <result name="regist2">/1/regist2.jsp</result>            
 5         </action>
 6         <action name="*Action" class="com.b.RegistT" method="{1}">
 7             <result name="regist1">/1/regist1.jsp</result>        
 8             <result name="regist2">/1/regist2.jsp</result>            
 9         </action>
10     </package>   

当精确匹配和模糊匹配都符合请求时,使用精确匹配

当模糊匹配都符合时,按照顺序,谁第一,就执行那个action.

默认Action:

在某些情况下,用户请求非常简单,不需要系统过多的处理,或者这些请求只是一个简单的转发.

对于只是简单的超链接请求,可以通过name为*的Action实现(最好放在最后).除此之外,struts2还允许在容器中定义一个默认的Action.

1 <default-action-ref name="errorReq"></default-action-ref>
2 <action name="errorReq">
3     <result>/error.jsp</result>
4 </action>    

这段代码必须放在package里的第一位,如果放在其他action之后,会报错.

 

posted @ 2015-05-08 10:00  思思博士  阅读(275)  评论(0编辑  收藏  举报