Struts 封装 DispatchAction

       很多时候我们在业务上需要把DispatchAction封装成自己项目的一个基类,以方便完成一些自己业务上的共通处理。DispatchAction是Action的一个子类,它的执行依然是先执行excute方法,根据参数来实行具体的业务分发。
       现在,我们先来写一个属于自己的DispatchAction:
package  blog.struts.base;

import  javax.servlet.http.HttpServletRequest;
import  javax.servlet.http.HttpServletResponse;

import  org.apache.struts.action.ActionForm;
import  org.apache.struts.action.ActionForward;
import  org.apache.struts.action.ActionMapping;
import  org.apache.struts.actions.DispatchAction;

public   abstract   class  BaseAction  extends  DispatchAction ... ... {
    
    
public ActionForward execute(ActionMapping mapping, ActionForm form,
            HttpServletRequest request, HttpServletResponse response)
            
throws Exception ......{

        
if ( !this.doFirst(mapping, form, request, response) )
                ...
...{
                 
// 前期处理的错误处理
        }

                
else
                ...
...{
                }

        ActionForward forward 
= super.execute(mapping, form, request, response);

        
if ( this.doLast(mapping, form, request, response) )
                ...
...{
                
/ 后期处理的错误处理
                }

        
return forward;
    }


    
protected boolean doFirst(ActionMapping mapping, ActionForm form,
            HttpServletRequest request, HttpServletResponse response) 
throws Exception ......{
        
//业务的前期处理
    }

    
    
protected boolean doLast(ActionMapping mapping, ActionForm form,
            HttpServletRequest request, HttpServletResponse response) 
throws Exception ......{
        
// 业务的后期处理
    }

}

    我们现在可以写一个自己项目的Action继承于上面的 BaseAction:
package  blog.struts.action;

import  javax.servlet.http.HttpServletRequest;
import  javax.servlet.http.HttpServletResponse;

import  org.apache.struts.action.ActionForm;
import  org.apache.struts.action.ActionForward;
import  org.apache.struts.action.ActionMapping;

import  blog.struts.base.BaseAction;

public   class  TestAction  extends  BaseAction  ... {
    
    
public ActionForward test(ActionMapping mapping, ActionForm form,
            HttpServletRequest request, HttpServletResponse response) 
throws Exception...{

        
// 具体的业务处理
        
        
return mapping.findForward("test");
    }

}

   现在我们执行TestAction的时候都会先进行基类的doFirst,doLast方法了。

你可能感兴趣的:(apache,struts,servlet,Blog)