DispatchAction类

DispatchAction

Struts提供了多种Action供选择使用。普通的Action只能通过调用execute()方法执行一项任务,如果在一个模块的开发中包含许多的基本操作,比如对一个银行系统的操作包括存钱、取钱、查询余额等,那么就需要分别为每个操作创建一个Action类。当这些基本操作非常多时,那么Action类就会变得庞大,而且每个Action类可能执行一些重复的操作,造成代码的冗余。

org.apache.struts.actions.DispatchAction是Action类的一个子类,它封装了一些基础方法,来实现使用一个Action处理多个操作的能力。DispatchAction类可以帮助我们用一个Action类封装一套类似的操作方法,节省了类的数目,同时也减轻了后期维护的困难。

DispatchAction类实现了父类(Action)的execute()方法,所以它的子类就不用来实现这个方法了,只需要专注于实际操作的方法即可,下面是一个扩展DispatchAction类的例子:

 

 

在struts-config.xml文件中配置DispatchAction类和配置普通的Action类有一点不同,在Action配置中多一个parameter属性,这个属性会指引DispatchAction类找到对应的方法,下面是DispatchAction类的配置:

01 <action path="/userBank" name="bankForm"
type="sunyang.webtier.action. BankAction "
scope="request" validate="true" input="/error.jsp"
parameter="method">        
02              ……
03 </action>
parameter属性的值是可以任意定义的,但需要注意的是,这个值要和页面传来的参数相对应。例如,在上面代码中将parameter属性的值设置为method,当用户请求访问DispatchAction时,应提供method请求参数:
01 <html:form action="/userBank.do?method=saveMoney " >
02 ……
03 </html:form>
04 <html:link href="/userBank.do?method=findBalance ">查询余额</html:link>

 

 

注:

页面中传的执行那个方法的方式不好,不如写个JS

如:

function ab(operate){
    if(operate.equal("jia")){
     document.CaclForm.action="cacl.do?add";
    }
    if(operate.equal("jian")){
     document.CalcForm.action="cacl.do?jian";
    }
   }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值