很多时候我们在业务上需要把DispatchAction封装成自己项目的一个基类,以方便完成一些自己业务上的共通处理。DispatchAction是Action的一个子类,它的执行依然是先执行excute方法,根据参数来实行具体的业务分发。
现在,我们先来写一个属于自己的DispatchAction:
我们现在可以写一个自己项目的Action继承于上面的 BaseAction:
现在我们执行TestAction的时候都会先进行基类的doFirst,doLast方法了。
现在,我们先来写一个属于自己的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 ...{
// 业务的后期处理
}
}
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");
}
}
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");
}
}