Spring带的JPetStore的Struts MVC版
使用了多级的继承体系,有BaseAction,SecureBaseAction,BaseActionForm。这些父类将常用的功能进行了一些封装,对写实际的程序还是有参考价值的。
===BaseAction===
继承org.apache.struts.action.Action,其实org.apache.struts.action.DispatchAction可能功能更强一些。所有的Action都继承了这个类。
private petStore
在所有的Action中保存了这个business object,封装了所有的数据访问的方法
重载了这个方法:
public void setServlet(ActionServlet actionServlet)
struts会在创建Action实例的时候自动执行这个方法。这个方法通过Spring获得PetStoreFacade接口的实现
增加了这个方法
protected PetStoreFacade getPetStore()
返回petStore对象,只有之类能访问到这个方法
===SecureBaseAction===
这个类用于保护需要登录才能执行的操作。
在execute方法中:
检查在session中的accountForm对象,if (acctForm == null || acctForm.getAccount() == null),不存在或没有登录则,保存当前地址,跳转到登录页]
定义了一个抽象方法,代替被本类使用了的execute方法。
protected abstract ActionForward doExecute
===BaseActionForm===
这个类提供了一个常用的Form验证的框架,在子类中只要实现验证部分就可以了。
request.setAttribute("errors", errorList);将验证后的结果保存到request中。
这里还提供了struts的错误处理,actionErrors.add(ActionErrors.GLOBAL_ERROR, new ActionError("global.error"));
这个在新的Struts版本中将不能使用,要用ActionMessages。页面可以直接用struts的taglib来显示错误,不过这里好像没有将错误存入到actionErrors中去,只是使用了传统的方式来处理错误,这里并没有使用Struts的错误处理机制。
在IncludeTop.jsp中显示错误。
这个类还提供了一个通用的方法:
protected void addErrorIfStringEmpty(List errors, String message, String value);
检查value是否为空,若空者将message加入到errors这个列表中。
使用了多级的继承体系,有BaseAction,SecureBaseAction,BaseActionForm。这些父类将常用的功能进行了一些封装,对写实际的程序还是有参考价值的。
===BaseAction===
继承org.apache.struts.action.Action,其实org.apache.struts.action.DispatchAction可能功能更强一些。所有的Action都继承了这个类。
private petStore
在所有的Action中保存了这个business object,封装了所有的数据访问的方法
重载了这个方法:
public void setServlet(ActionServlet actionServlet)
struts会在创建Action实例的时候自动执行这个方法。这个方法通过Spring获得PetStoreFacade接口的实现
增加了这个方法
protected PetStoreFacade getPetStore()
返回petStore对象,只有之类能访问到这个方法
===SecureBaseAction===
这个类用于保护需要登录才能执行的操作。
在execute方法中:
检查在session中的accountForm对象,if (acctForm == null || acctForm.getAccount() == null),不存在或没有登录则,保存当前地址,跳转到登录页]
定义了一个抽象方法,代替被本类使用了的execute方法。
protected abstract ActionForward doExecute
===BaseActionForm===
这个类提供了一个常用的Form验证的框架,在子类中只要实现验证部分就可以了。
request.setAttribute("errors", errorList);将验证后的结果保存到request中。
这里还提供了struts的错误处理,actionErrors.add(ActionErrors.GLOBAL_ERROR, new ActionError("global.error"));
这个在新的Struts版本中将不能使用,要用ActionMessages。页面可以直接用struts的taglib来显示错误,不过这里好像没有将错误存入到actionErrors中去,只是使用了传统的方式来处理错误,这里并没有使用Struts的错误处理机制。
在IncludeTop.jsp中显示错误。
这个类还提供了一个通用的方法:
protected void addErrorIfStringEmpty(List errors, String message, String value);
检查value是否为空,若空者将message加入到errors这个列表中。