`
mfcai
  • 浏览: 404444 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

自定义的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变量还没有定义哦,贴的代码被切过把,呵呵

相关推荐

    CMAKE跨平台示例--QT自定义窗体基类

    一个基于CMake跨平台开发环境的多模块的QT配置示例。 同时在其中内置了一个QT自定义窗体的基类。

    iOS Category基类扩展源码

    iOS Category基类扩展源码 拖进工程里直接使用 所有代码可修改可编辑可复用

    asp.net实现非常实用的自定义页面基类(附源码)

    主要介绍了asp.net实现非常实用的自定义页面基类,包含日志处理、控件赋值、异常处理等功能,非常具有实用价值,需要的朋友可以参考下

    封装ef基类框架

    分享一下 使用EF时,对增删改查基本操作的封装代码 ef重构基类;抛砖引玉,仅供参考; ef增删改差扩展方法!

    struts1.0和struts2

    ◆Struts1要求Action类继承一个抽象基类。Struts1的一个普遍问题是使用抽象类编程而不是接口。 ◆Struts 2 Action类可以实现一个Action接口,也可实现其他接口,使可选和定制的服务成为可能。Struts2提供一个...

    wc-base:JavaScript Web组件自定义元素基类,该类自动导入组件的样式表并在自定义元素浏览器注册表中对其进行定义

    wc-base:JavaScript Web组件自定义元素基类,该类自动导入组件的样式表并在自定义元素浏览器注册表中对其进行定义

    Struts1与Struts2本质区别

    为了脱离Web容器测试Struts 1的Action,必须借助于第三方扩展:Struts TestCase,该扩展下包含了系列的Mock对象(模拟了HttpServetRequest和HttpServletResponse对象),从而可以脱离Web容器测试Struts 1的Action类...

    基于连接池数据库操作基类

    数据库操作的基类,支持sql server,orcal,ole db,基于连接池的,包括存储过程的调用等,调用简单,使用哪种数据库类型直接实例化对应的dataPool即可。

    具备白名单、黑名单的Filter基类扩展

    NULL 博文链接:https://jinnianshilongnian.iteye.com/blog/1663481

    Struts 1 &sturts

    特性 Struts 1 Struts 2 Action类 Struts 1要求Action类要扩展自一个抽象基类。Struts 1的一个共有的问题是面向抽象类编程而不是面向接口编程。

    Struts1和Struts2的比较

    Struts 1要求Action类要扩展自一个抽象基类。Struts 1的一个共有的问题是面向抽象类编程而不是面向接口编程。

    易语言自绘基类

    易语言自绘基类源码系统结构:滑块条位置被改变,取类方法指针,取复制范围,RGB颜色透明,按钮被单击,创建,重画,鼠标被移动,鼠标左键被按下,鼠标左键被放开,消息处理,高级显示线程,创建

    Android App框架设计 基类BaseActivity

    一个BaseActivity基类 封装了不同网络访问状态下界面切换 toolbar标准 以及DataBinding实现无需findViewbyid 和Butterknife超长注解成员变量 Activity管理类

    程序员必看的书籍Struts1和Struts2的区别

    程序员上班的必要的书籍,描写在岗位如何遇到的一些问题,...Struts1和Struts2的区别Action 类: Struts1要求Action类继承一个抽象基类。Struts1的一个普遍问题是使用抽象类编程而不是接口。(侵入式编程,不赞同) ...

    struts-app

    Struts2和Struts1的不同 ◆Struts1要求Action类继承一个抽象基类。Struts1的一个普遍问题是使用抽象类编程而不是接口。

    ThinkPHP开发类库扩展

    本SDK是基于ThinkPHP开发类库扩展,因此只能在ThinkPHP平台下使用(ThinkPHP版本要求2.0以上)。DEMO中用到了控制器分层,因此运行DEMO需使用ThinkPHP3.1.2版本。 2,目前支持的平台 目前可用登录平台为:腾讯QQ,...

    dao层基类dao层基类dao层基类

    dao层基类dao层基类dao层基类dao层基类dao层基类

    .Net开发的框架(里面还有几个自定义控件,而且都是源代码的哦)

     增强的自定义控件  代码自动生成器  界面自动生成器 2.业务框架  菜单导航  权限控制  系统日志  常用业务基类  常用界面模板,CSS样式单,母版页,皮肤等  常用业务模块,比如什么人员管理,...

    android 项目框架 基类(eclipse)

    一个可以复用项目模板框架,搭建了一个项目框架,编写了一些最基础的、项目常用的一些代码包括activity基类,adapter基类

Global site tag (gtag.js) - Google Analytics