如题,到底对开发的时候,有什么好处么

解决方案 »

  1.   

     DispatchAction类是一个抽象类,它实现了父类(Action)的execute()方法,所以它的子类就不用来实现这个方法了,只需要专注与实际操作的方法,  
         1.首先要一个DispatchAction的子类,它含有一些方法,login,logout,method1, 
    package examples; 
                                                                                    
    package examples; 
                                                                                    
    import javax.servlet.http.*; 
    import org.apache.struts.action.*; 
    import org.apache.struts.actions.*;   public class AccountAction extends DispatchAction { 
        public ActionForward login(ActionMapping mapping, 
                                  ActionForm form, 
                                  HttpServletRequest request, 
                                  HttpServletResponse response) 
        throws Exception { 
            // 進行一些Login的邏輯 
                  return mapping.findForward("success");       } 
                                                                                    
        public ActionForward logout(ActionMapping mapping, 
                                    ActionForm form, 
                                    HttpServletRequest request, 
                                    HttpServletResponse response) 
        throws Exception { 
            // 進行一些Logout的邏輯 
                  return mapping.findForward("success1");       }     public ActionForward method1(ActionMapping mapping, 
                                    ActionForm form, 
                                    HttpServletRequest request, 
                                    HttpServletResponse response) 
        throws Exception { 
            // 進行一些method1的邏輯 
                  return mapping.findForward("success");       }      

      
          一定要注意在DispatchAction中你想执行的操作,都必须要有统一的参数(ActionMapping mapping, ActionForm form,HttpServletRequest request, HttpServletResponse response),是一个规定. 
    2.接下来是配置struts-config.xml 
      
        <action path="/login"  type="examples.AccountAction"  
                 name="logonForm" 
                 scope="request" 
                 parameter="action" 
                 input="/pages/dispatch1.jsp"> 
           <forward name="success" path="/pages/success.jsp" /> 
        </action>     <action path="/logout"  type="examples.AccountAction"  
                 name="logonForm" 
                 scope="request" 
                 parameter="action" 
                 input="/pages/dispatch1.jsp"> 
           <forward name="success1" path="/pages/success1.jsp" /> 
        </action>    这里需要注意的就是parameter属性的值,因为这个值要和页面传来的参数对应. 3.再来看看JSP页 pages/dispatch1.jsp 
      
    <%@ taglib uri="/tags/struts-html" prefix="html" %> 
    <html:link href="/DispathActionTest/login.do?action=login">login</html:link><br> 
    <html:link href="/DispathActionTest/logout.do?action=logout">logout</html:link> 
        这里要注意几点,首先 ?后面的KEY要和struts-config.xml中的parameter相同,还有它的VALUE要是你在action的一个方法名字,这里方法名为login, 那么在程序运行时就是调用login的操作,如果是logout,那程序就调用logout的操作. 
      

  2.   

    DispatchAction是struts里面使用的,你一般不会使用这个的。这个是能根据你的forward的路径,进行dispatch
      

  3.   

    DispatchAction 继承与Action
    可以减少Action数量,使程序清晰,简洁
      

  4.   

    同一个模块下 为了 更清晰的 把所有的功能都 整和到一起 所以可以用到它 只不过用的时候要指向一个方法在 config 中加上一个参数
      

  5.   

    不使用dispatchAction也可以实现的,但是要从页面上传参数,其实都是一样的原理