动态方法调用就是为了解决一个Action对应多个请求的处理,以免Action太多
1.指定method属性的方法
直接上代码
这个是java类文件
public class HelloWorldAction extends ActionSupport {
@Override
public String execute() throws Exception{
System.out.println("执行action");
return "123";
}
public String add(){
return SUCCESS;
}
public String update(){
return SUCCESS;
}
}
这个是struts.xml文件
<struts>
<package name="default" namespace="/" extends="struts-default">
//没有method属性,就对应execute()方法
<action name="helloworld" class="com.zyj.struts.HelloWorldAction">
<result name="123" >/WEB-INF/MyJsp.jsp</result>
</action>
//name对应浏览器请求的url
//method对应类中的方法名
<action name="add" method="add" class="com.zyj.struts.HelloWorldAction">
<result>/WEB-INF/add.jsp</result>
</action>
//name对应浏览器请求的url
//method对应类中的方法名
<action name="update" method="update" class="com.zyj.struts.HelloWorldAction">
<result>/WEB-INF/up.jsp</result>
</action>
</package>
</struts>
2.通配符方式
struts.xml文件内容:
<struts>
//据说struts2.5之后必须要加strict-method-invocation="false" ,之前的版本反正我没用过;
<package name="default" namespace="/" extends="struts-default" strict-method-invocation="false">
//name中的*号就是通配符,name中不能有斜杠,星号是有顺序的,序列从1开始
//要使用*号的内容,就要使用大括号{},大括号内的数字就是第几个*星号的意思
<action name="*_*" method="{2}" class="com.zyj.struts.{1}Action">
<result name="123" >/WEB-INF/MyJsp.jsp</result>
<result >/WEB-INF/{2}.jsp</result>
</action>
</package>
</struts>