学习运用通配符(转)
7.学习使用通配符
在某些情况下,用户请求非常的简单,不需要系统过多的处理,或者这些请求只是一个简单的转发功能,这个时候做很多的Action和配置更多的struts.xml就会让使得阅读和书写变成了苦力工作。Struts的开发团队当然不想让他的用户把精力放到这上面,所以他们发明一个个叫通配符(我也不知道是不是他们发明的,反正我以前没见过)的东西。下面我们就来学习一下通配符。
通配符用下面4种常用的用法,一一道来
1:动态改变调用的方法
struts.xml 代码:
<action name="*Action" class = "action.MyAction" method="{1}"> <result>/Main.jsp</result> </action> |
解释:
*号 表示任意
{1}表示前面通配符中的第一个*号
这样定义的Action就不止是一个Action了, 而是一系列的Action,
凡是以Action结尾的都会进入这里,比如aaAction 、bbAction、ccAction
在后面的method代表调用的方法 如果请求路径是aaAction.action 则调用MyAction中的aa()方法.
2.动态改变Action
struts.xml 代码
<action name="*Emp2000c" class = "action.emp2000c.{1}Emp2000c"> <result>/Main.jsp</result> </action> |
解释:
凡是以Emp2000c结尾的Action都会进入这里
如果访问的路径是addEmp2000c.action则会进入此action并调用
action.emp2000c. addEmp2000c的execute()方法进行处理
3: 动态改变Action和调用方法
Struts.xml代码
<action name="*__*" class = "action.{1}" method="{2}"> <result>/Main.jsp</result> </action> |
解释:
凡是包含 __ 的Action都会进入这里
如果访问的是Bom3000c__add.action 则会进入此Action并调用
action.Bom3000c中的add()方法进行处理
这样一来 就能减少很多重复的代码了,对于只做转向的action 我们可以这样写:
Struts.xml代码
<action name="*"> <result >/{1}.jsp</result> </action> |
因为他没有定义class处理的实例所以呢他调用了默认的ActionSupport中的execute来返回success的字符串,即该Action总是直接返回result中指定的JSP资源,JSP资源使用了表达式来生成资源名。所以当请求为A1.action时直接转向了A1.jsp页面, 当请求为A2.action时直接转向了A2.jsp页面。