StrutsCatalog系列(1)--BaseAction

在应用程序中使用BaseAction

/**
作者:TedHusted
译者:Rifoo Technology(http://www.rifoo.com
时间:2005-11-08
备注:转载请保留以上声明
**/

前言:
官方网站上自推出Struts时就有了StrutsCatalog这个专题来介绍Struts的设计模式和思想,但是知道的人并不多,而且很多人在开发时照搬模式而不知其所以然,尤其针对初学者来说,这些更是珍贵的东西。本站将陆续推出StrutsCatalog系列中文版,以满足广大初学朋友的要求。

在我们的应用中,Action通常都包含一些公用的方法或函数。为了方便的共享这些公用方法或函数,我们通常在应用中声明一个BaseAction,并却所有应用中的自定义Action都是扩展这个BaseAction的。这里提供一个BaseAction的范例文件,它包含多个公用方法和函数:

 http://cvs.apache.org/viewcvs/jakarta-struts/contrib/scaffold/src/java/org/apache/struts/scaffold/BaseAction.java

注意:要使它是线程安全的,所有公用方法或函数都必须通过方法签名传入所有的参数。而且Action不能够共享其成员变量。(译者注:这一点是很重要的,不然会导致多个线程共享一个变量的严重情况。)

如果关键的代码要在每个Action的execute方法中编写,那么一个很好的策略是为子类创建一个新的抽象方法来代替execute方法。这些可以通过BaseAction来实现,正常的话,它能够返回这个新方法的结果。这个策略使得我们可以改变自己这个新方法的参数,为系统提供一个更清晰的流程。

   public ActionForward execute(ActionMapping mapping, 
                 ActionForm form,
                 HttpServletRequest request,
                 HttpServletResponse response)
    throws Exception {

        // Application specific behaviour
        // if everything is kosher call subclass extension point

        return ( executeAction(mapping,form,request,response, myParameter ) )
   }

这里,executeAction是基类的一个抽象方法。在这里为了演示,我们添加了一个额外的参数,myParameter。当然,如果我们的应用不需要改变签名,那么在自己的实现中还是简单的保留Struts自己的execute签名吧。

(译者注:术语签名,这里指的是一个方法的方法名+参数名组成的部分)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值