3.包含多个控制器方法的Action类
同一个Action类中可以包含多个方法,通常这些处理方法是一组相关的业务逻辑,例如对书籍进行增,删,改,查,可以用同一个Action类来完成.如何在不同情况下调用不同的方法呢?
1)通过uri来指定具体执行的方法
被调用的Action名称修改为: ActionName!methodName.action,通过!后面的内容确定执行的方法.
(默认情况下是关闭动态方法调用的,开启动态方法调用的方法:设置struts.enable.DynamicMethodInvocation的值为true)
2)通过配置文件指定执行的方法
通过配置文件struts.xml中<action>标签的method属性指定,未指定method属性默认该属性值为execute
3)使用通配符**
通配符为* ,该通配符可以通过配置文件struts.xml中name,class和method属性中使用
<action name="*Action" class="xxx" method="{1}">
其它用法:
1. <action name="*Action" class="xxx{1}" >
2. <action name="*-*" class="xxx{1}" method="{2}" >
3. <action name="*">
<result>/{1}.jsp</result>
</action>
....
说明:
由于通配符的存在可能出现配置文件中如下情况:
<action name="*" 。。。
<action name="*Action" 。。。
<action name="ABCAction" 。。。
此时请求时遵循最精确路径匹配的原则,带通配符的配置则按照先后顺序寻找匹配。即如果请求路径是ABCAction则执行最后一个配置所对应的类,如果是DDAction则执行第一个配置所对应的类,如果是DD则执行第一个个配置所对应的类.如果把1,2配置调换,则如果是DDAction则执行name="*Action"配置所对应的类
4.默认的Action类
<default-action-ref name="另一个有效的Action的name属性值">
该Action成为容器中默认的Action