一、用途:通常在一个Action中只能完成一种业务操作,例如用户的增、删、改得放在三个Action 中,但是如果我想把这三个业务都放在一个Action中,想通过URL后跟参数来区分,即通过http://localhost:8080/proj/user.do?method=insert 表示增加
http://localhost:8080/proj/user.do?method=delete 表示删除
http://localhost:8080/proj/user.do?method=alter 表示修改
可见增、删、改是写在 path 为 user的 一个action 这个时候就用到的DispatchAction
二、使用方法
1、创建的 action 继承 DispatchAction
2、创建自己需要的方法,要和action中的execute有相同的参数个数和参数类型
如下例:一个action中有两个方法,add与sub, 它们都与execute有相同的参数个数和参数类型
3、在struts.xml中进行配置
4、http://localhost:8080/test/test1.do?method=sub
http://localhost:8080/test/test1.do?method=add
分别测试
action的parameter属性决定了URL后跟的参数变量
三、找不到action的检查方法
1、首先检查action中的方法是否是那四个参数,以及是否 throws 了Exception
2、检查action的配置文件是否配置了parameter 属性。
http://localhost:8080/proj/user.do?method=delete 表示删除
http://localhost:8080/proj/user.do?method=alter 表示修改
可见增、删、改是写在 path 为 user的 一个action 这个时候就用到的DispatchAction
二、使用方法
1、创建的 action 继承 DispatchAction
2、创建自己需要的方法,要和action中的execute有相同的参数个数和参数类型
如下例:一个action中有两个方法,add与sub, 它们都与execute有相同的参数个数和参数类型
public class Test1Action extends DispatchAction {
public ActionForward sub(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
//SessionContainer a=this.getSessionContainer(request);
System.out.println("+++++++++sub++++++++++++");
return null;
}
public ActionForward add(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
System.out.println("+++++++++++add+++++++++++");
return null;
}
}
3、在struts.xml中进行配置
<action path="/test1"
type="com.qf.struts.action.Test1Action"
validate="false"
parameter="method" />
4、http://localhost:8080/test/test1.do?method=sub
http://localhost:8080/test/test1.do?method=add
分别测试
action的parameter属性决定了URL后跟的参数变量
三、找不到action的检查方法
1、首先检查action中的方法是否是那四个参数,以及是否 throws 了Exception
2、检查action的配置文件是否配置了parameter 属性。