首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

自定义的Action基类扩充struts框架

2012-10-27 
自定义的Action基类扩展struts框架在struts中,对于业务逻辑的操作则主要由Action、ActionMapping、ActionFor

自定义的Action基类扩展struts框架
   
    在struts中,对于业务逻辑的操作则主要由Action、ActionMapping、ActionForward这几个组件协调完成的,其中Action扮演了真正的业务逻辑的实现者,ActionMapping与ActionForward则指定了不同业务逻辑或流程的运行方向。
    在struts应用中,每个Action类都需要从 org.apache.struts.action.Action 继承而来。但实际应用中,我们喜欢从Action类中总结出来了一些通用特性。因此,构造一个基类将这些通用特性的代码实现出来,让应用中所用到的所有Action类直接继承我们构造的基类,而不是继承org.apache.struts.action.Action.从总结出来的通用特性中,最常见的是用户是否登陆,判断session失效,用户权限认证,错误日志打印等.这些通用特性都在自己构造的基类中实现,而且不需要在其他Action类中去调用
思路:
我的struts版本是struts1.0
1.定义一个抽象的基类ComAction,该基类继承org.apache.struts.action.Action
2.在ComAction定义一个抽象方法execute,应用中的其他action类都要覆盖这个方法,在这个方法实现具体的业务逻辑.
3.在ComAction中定义一个方法perform,是用来覆盖Action的perform方法,在这个方法中,完成公用的特性
4.在perform调用抽象类execute.
具体实现,以判断session是否失效为例:

import javax.servlet.http.*;import org.apache.struts.action.*;public abstract class ComAction extends Action {public ComAction() {}public ActionForward perform(ActionMapping mapping,     ActionForm form,     HttpServletRequest request,     HttpServletResponse response    ) {try {   HttpSession   session=request.getSession();                   //判断session是否失效                   if(session.getAttribute("userId")!=null)                      //否,执行业务逻辑                      forwardTo = perform(mapping, form, request, response);                   else                      //是,跳转到错误页面                      forwardTo ="syserr";} catch (Exception e) {                        //有异常,也跳转到错误页面forwardTo = "syserr";System.out.println("Exception :" + e.getMessage());}return (mapping.findForward(forwardTo));}    public abstract String execute(        ActionMapping mapping,        ActionForm form,        HttpServletRequest request,        HttpServletResponse response);}




文章欢迎转载,但请注明出处和作者 1 楼 ddd0401 2008-11-16   这兄弟的forwardTo变量还没有定义哦,贴的代码被切过把,呵呵

热点排行