我是这样写的,希望对你有帮助。public abstract BaseAction extends Action{public void f1(){}public boolean f2(){
   return true;
}public ActionForward execute(ActionMapping mapping, ActionForm form,
                               HttpServletRequest request,
                               HttpServletResponse response) throws Exception {
  f1();
  if(!f2()){
     return mapping.findForward("failure");
  }
  return process(mapping, form, request, response);
}public abstract ActionForward process(ActionMapping mapping, ActionForm form,
                               HttpServletRequest request,
                               HttpServletResponse response) throws Exception ;
}所有的action继承BaseAction,实现process方法。

解决方案 »

  1.   

    这样写:
      public void f1(HttpServletRequest request,
                                   HttpServletResponse response){
       request.getSession().invalidate();
    }
      

  2.   

    to Saro: 谢谢不过当子类继承BaseAction,覆盖public ActionForward execute(ActionMapping mapping, ActionForm form,
                                  HttpServletRequest request,
                                  HttpServletResponse response) throws Exception {
    ...
    }那么以下这段代码还能执行吗?{
      f1();
      if(!f2()){
         return mapping.findForward("failure");
      }
      return process(mapping, form, request, response);
    }
      

  3.   

    子类覆盖process方法即可,那么子类会调用父类的execute方法,在其中调用子类的process方法
      

  4.   

    就是 stonecsdn(东东) 说的那样,如果你不想执行f1(),f2()的话,直接继承Action并实现execute方法就行了。
      

  5.   

    楼上的说的都很清楚了,其实这个方法不错,就是struts内部也采用类似的结构进行封装的!