打字猴:1.70048487e+09
1700484870 代码清单38-11 模型行为分发接口
1700484871
1700484872 public interface IActionDispather{
1700484873
1700484874 //根据Action的名字,返回处理结果
1700484875
1700484876 public String actionInvoke(String actionName);
1700484877
1700484878 }
1700484879
1700484880 它的职责非常简单,得到actionName就执行,熟悉Struts的读者可能很清楚这个方法是非常复杂的,它要从配置文件中找到执行对象,然后执行方法,还要考虑值栈、异常等等,非常复杂。我们这里就有一个方法,它对外提供一个门面,所有的访问都是通过该门面来完成,其实现类如代码清单38-12所示。
1700484881
1700484882 代码清单38-12 模型分发实现
1700484883
1700484884 public class ActionDispather implements IActionDispather{
1700484885
1700484886 //需要执行的Action
1700484887
1700484888 private ActionManager actionManager=new ActionManager();
1700484889
1700484890 //拦截器链
1700484891
1700484892 private ArrayList<Interceptors>listInterceptors=InterceptorFactory.createInterceptors();
1700484893
1700484894 public String actionInvoke(String actionName){
1700484895
1700484896 //前置拦截器
1700484897
1700484898 return actionManager.execAction(actionName);
1700484899
1700484900 //后置拦截器
1700484901
1700484902 }
1700484903
1700484904 }
1700484905
1700484906 它是一个非常简单的类,对外部提供统一封装好的行为。模型管理器的类图如图38-6所示。
1700484907
1700484908
1700484909
1700484910
1700484911 图38-6 模型管理器类图
1700484912
1700484913 首先说ActionManager类,它负责管理所有的行为类Action,那就必须定义一个行为类的接口或抽象类,如代码清单38-13所示。
1700484914
1700484915 代码清单38-13 抽象Action
1700484916
1700484917 public abstract class ActionSupport{
1700484918
1700484919 public final static String SUCCESS=“success”;
[ 上一页 ]  [ :1.70048487e+09 ]  [ 下一页 ]