dispatchaction继承自action类,它是一个抽象类,封装了一些基础方法,来解决使用一个action处理多个操作的能力,这就是dispatchaction最大的用途,它可以帮助我们用一个action类,封装一套类似的操作方法,节省了类的数目,同时也减轻了后期维护的困难。
dispatchaction中主要包括一下几个方法:
protected actionforward dispatchmethodprotected java.lang.reflect.method getmethodprotected java.lang.string getmethodname
dispatchaction在配置上于标准的action稍有不同,就是要在action配置中多一个parametr属性,这个属性将指导dispatchaction找到对应的方法,例如这样配置:
<action path="/savesubscription" type="org.apache.struts.actions.dispatchaction" name="subscriptionform" scope="request" input="/subscription.jsp" parameter="method"/>
parameter的属性值是可以任意起的,只要你记得在传参数的时候统一就可以了。比如我写了一个类似这样的action,它继承自dispatchaction类,包含了三个操作方法,有add(),update(),delete()。当我想要调用这个action的update操作时,提交的url应该类似这样的:
http://localhost:8080/myapp/savesubscription.do?method=update
就是这么简单,不过非常方面我们程序员了,开发中我感觉的确省了好多代码,至少以前的三个类文件变成了现在一个类了,而且在后期维护的时候感觉也是方便很多。
需要注意的是:在调用dispatchaction的时候method参数是不能为空的,如果空,dispatchaction会调用unspecified方法并抛出异常。
