请问DispatchAction这个类有什么用,都有什么方法?请具体介绍一下谢谢,有API吗?还有他的方法怎么用?

解决方案 »

  1.   

    DispatchAction 
    定义 public abstract class DispatchAction extends Action 
    这是一个抽象的Action,它会根据request 中的parameter来执行相应的方法。通个这个Action类可以将不同的Action集中到一个Action文件中来。 Struts-config.xml: <action path="/saveSubscription" type="org.apache.struts.actions.DispatchAction" name="subscriptionForm" scope="request" input="/subscription.jsp" parameter="method"/> 在Action中要有相应的方法: Public class demoAction extends DispatchAction{ public ActionForward delete(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception public ActionForward insert(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception public ActionForward update(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception } 你就可以通过这样的方法来访问你的程序: 
      

  2.   

    可以通过method指定的参数动态调用Action里的方法,而不局限于execute方法,
      

  3.   

    cancelled(ActionMapping mapping, ActionForm form, javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response)dispatchMethod(ActionMapping mapping, ActionForm form, javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response, java.lang.String name) execute(ActionMapping mapping, ActionForm form, javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response) 
    getMethod(java.lang.String name) 
    getMethodName(ActionMapping mapping, ActionForm form, javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response, java.lang.String parameter)unspecified(ActionMapping mapping, ActionForm form, javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response) 
      

  4.   

    简单说:一般的列表页面有增删改查四类方法
    dispatcheraction可以让你把这四个方法放在一个dispatcheraction子类中 ...parameter="method" 这个配置表示url中的method参数指定了调用哪个方法,你也可以指定别的参数名。
    那么method就有点类似传统的operFlag了。
      

  5.   

    DispatchAction 是Aciton的一个子类,主要解决了一个请求处理多个功能的问题
    普通的Action你只能写execute方法来处理业务,而想用这一个Action处理多个任务,你必须要请求参数进行解析,用if语句块来处理
    举一个小例子:
        有如下一个url:  http://localhost:8080/myApp/addUserAction.do
    如果你处理这个url的是一个普通的Action,那么就只能在execute里面执行插入的相关操作,如果换成一下的utl:
        http://localhost:8080/myApp/UserAction.do?method=add
    你就应该根据method对象的值来执行相应的操作,如再有一个路径http://localhost:8080/myApp/UserAction.do?method=delete
    这个还可以使用那个Action来处理的,只是多判断一下而已.如果你用DispatchAction,就简单多了,如楼上的配置
      
    <action path="/saveSubscription" type="org.apache.struts.actions.DispatchAction" name="subscriptionForm" scope="request" input="/subscription.jsp" parameter="method"/>他的流程如下:
        页面有一个utl: http://localhost:8080/你的应用名/saveSubscription.do?method=save
    在你写的继承的DispatchAction类里面肯定有一个名为save的方法来处理,如果再来其他的以saveSubscription.do结尾的请求,这个Action还可以处理