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

WebWork2.2学习笔记(三)Interceptor

阅读更多
WebWork的核心是Xwork,而Xwork的核心可能就是Interceptor了。上周我在学习Action的时候已经接触到了Interceptor的概念,Interceptor的作用就是在执行Action前后进行拦截,使用户有机会执行其他操作。

在Xwork中,AOP是通过Action、ActionInvocation和Interceptor这三个接口完成的。WebWork通过Action代理类ActionProxy来执行Action的execute方法,而该方法则调用ActionInvocation的invokeAction方法具体执行Action中的方法。在DefaultActionInvocation的invoke方法中可以看到拦截器的执行逻辑,代码如下:

public String invoke() throws Exception {
    ......
    if (interceptors.hasNext()) {
        InterceptorMapping interceptor = (InterceptorMapping) interceptors.next();
        resultCode = interceptor.getInterceptor().intercept(this);
    } else {
        resultCode = invokeActionOnly();
    }
    ......
}

看看上周的那个DefaultWorkflowInterceptor是如何工作的:
    protected String doIntercept(ActionInvocation invocation) throws Exception {
       
       // 取得要拦截的Action对象
        Object action = invocation.getAction();
       
       
        if (action instanceof Validateable) {
            /*
             * 如果action是Validateable接口的一个实例,则执行接口的validate方法,这个方法可能是检查用户
             * 输入的合法性,如果有错误,可能往errors里增加错误信息。
            Validateable validateable = (Validateable) action;
            if (_log.isDebugEnabled()) {
                _log.debug("Invoking validate() on action "+validateable);
            }
           
            try {
                PrefixMethodInvocationUtil.invokePrefixMethod(
                        invocation,
                        new String[] { VALIDATE_PREFIX, ALT_VALIDATE_PREFIX });
            }
            catch(Exception e) {
                e.printStackTrace();
                // If any exception occurred while doing reflection, we want
                // validate() to be executed
                _log.warn("an exception occured while executing the prefix method", e);
            }
           
           
            if (alwaysInvokeValidate) {
                validateable.validate();
            }
        }
       
        /*
          * 如果action是ValidationAware的实例,则检查action中是否包含错误信息,如果有,则返回
          * INPUT的Result代码,并且整个Action就终止。
          */
        if (action instanceof ValidationAware) {
            ValidationAware validationAwareAction = (ValidationAware) action;

            if (validationAwareAction.hasErrors()) {
                if (_log.isDebugEnabled()) {
                    _log.debug("Errors on action "+validationAwareAction+", returning result name 'input'");
                }
                return Action.INPUT;
            }
        }

         /*
          * 输入合法,执行action的功能。
          */
        return invocation.invoke();
    }
分享到:
评论

相关推荐

    WebWork 2.2新特性的PPT.rar

    此外,WebWork 2.2强化了拦截器(Interceptor)功能。拦截器是WebWork中的一个重要概念,它可以在动作执行前后插入自定义逻辑。新版本中,拦截器的配置更加方便,可以更好地实现如权限检查、日志记录等通用功能,...

    webWork2.2+spring +SpringMVC组合 例子

    【标题】:“webWork2.2+spring+SpringMVC组合例子”是一个示例项目,展示了如何将三个经典的Java Web框架——WebWork2.2、Spring以及Spring MVC整合在一起,以构建一个完整的Web应用程序。这样的组合可以充分利用各...

    webwork2.2例子带有lib包

    学习WebWork2.2时,你可以先了解其基本架构和概念,然后通过示例项目逐步熟悉Action的编写、配置文件的配置、视图的创建以及如何利用lib库进行集成开发。实践是掌握任何框架的最好方式,所以尝试运行这个例子,逐步...

    WebWork2.2入门

    **WebWork2.2入门详解** WebWork是一个基于Java的MVC(模型-视图-控制器)框架,它为开发企业级Web应用提供了强大的支持。WebWork2.2是其一个较早但仍然广泛使用的版本,它引入了许多创新特性,如动作映射、拦截器...

    webwork2.2

    webwork2.2.jar 类包 web work2

    WebWork2学习笔记

    本学习笔记将深入探讨WebWork2的核心概念、主要特性以及如何在实际项目中应用。 首先,WebWork2的核心是Action,它是处理用户请求的中心组件。Action类负责接收HTTP请求,执行业务逻辑,并通过Result将处理结果返回...

    webwork-2.2.2

    webwork的包。webwork开发者不可缺少的

    webwork学习笔记(全)

    以上只是WebWork教程的部分内容,完整的学习笔记涵盖了更多高级主题,如Interceptor(拦截器)、Validation(验证)、I18N(国际化)、AOP支持以及与其他开源项目的集成,如G-Roller-WW和Spring等。通过深入学习和...

    webwork-2.1.7 xwork.jar

    webwork 2.1.7 版 原版留存 xwork.jar

    webwork学习笔记

    ### WebWork学习笔记知识点 #### 一、WebWork框架简介 - **定义**: WebWork是一个由OpenSymphony组织开发的MVC(Model-View-Controller)框架,专注于组件化和代码重用,适用于J2EE应用程序开发。 - **最新版本**:...

    webwork 入门学习

    2. **拦截器(Interceptor)**:拦截器是WebWork的一大特色,它允许在动作执行前后插入自定义逻辑,如登录检查、事务管理等,提高了代码的复用性和模块化。 3. **模型-视图-控制器(MVC)**:WebWork遵循MVC设计...

    webwork中文 webwork中文参考 webwork中文资料 webwork学习资料

    WebWork作为一款成熟且功能丰富的Web框架,不仅提供了强大的开发工具和丰富的API,还具备良好的社区支持和广泛的第三方库集成。尽管随着时间的发展,新的框架如Spring MVC和Play Framework等逐渐崭露头角,但WebWork...

    webwork2个人学习总结

    - 开始学习Webwork2时,首先需要下载对应的JAR包,例如webwork-2.2.6.2版本。 - 将下载的JAR包放入项目中的LIB目录,包括default文件夹下的所有JAR包和webwork-2.2.6.jar。 - 这些JAR包是Webwork2运行的基础,...

    Webwork学习稀料

    在这个"Webwork学习稀料"的压缩包中,我们可以找到关于Webwork的开发指南和课件,这些都是深入理解并掌握Webwork的关键资源。 首先,我们来看《Webwork开发指南》。这本书可能由夏昕等人编写,是学习Webwork的入门...

    WebWork教程

    WebWork的项目资源和参考资料部分提供了学习该框架所必需的资源链接,包括官方文档、社区论坛和博客等,这些都是学习和深入了解WebWork的好途径。 总之,WebWork是一个功能强大的Java Web框架,它通过组件化和代码...

    webwork 学习 培训 ppt

    总的来说,WebWork学习培训PPT的内容涵盖了从WebWork的基本概念、MVC模式的解释、与其他框架的对比,到Action、ActionSupport、ActionContext和Interceptor的详细讲解,为学员提供了全面了解和掌握WebWork所需的理论...

    WebWork 与 FreeMarker整合开发培训指南

    `interceptor-ref name="defaultStack"`确保了默认拦截器栈的使用,这对于WebWork的正常工作至关重要。 接下来,我们谈谈FreeMarker的使用和安装: FreeMarker是一个强大的模板语言,它与Java代码分离,使得开发者...

Global site tag (gtag.js) - Google Analytics