第5章: 使用interceptor增加功能

interceptor是WebWork最强大的特性之一,它可以在action和result执行前后进行处理。

一.  interceptor如何被调用

     1. 使用request封装类访问上传文件

        当请求(*.action的请求)进入WebWork的ServletDispatcher的时侯,WebWork会查找该action的位置,然后这些配置会
        构建一系列应用于这个action的interceptor。interceptor围绕着action和result的执行过程,当action和result执行
        完之后,每个interceptor都会按照相反的次序重新获得控制权。

        请求->webwork->interceptor1->interceptor2->action->result->interceptor2->interceptor1->webwork->响应

二.  使用预建的interceptor

     1. 工具interceptor
     2. 属性设置interceptor
     3. 工作流interceptor

     绝大多数预建的interceptor都扩展了com.opensymphony.xwork.interceptor.AroundInterceptor, 而不是直接实现Interceptor
     接口。

三.  使用预建的interceptor栈    

四.  构建你自己的interceptor

     interceptor必须是无状态的(没有实例变量),并且不能够使用任何ActionInvocation提供范围以外的API。

     示例:

     1. 认证:

        //暂时放一放,后面补起来 2007-9-25

     2. 在result执行之前获得回调控制

        //暂时放一放,后面补起来 2007-9-25

五.  interceptor vs Filter

     1. interceptor并不依赖于servlet容器;
     2. interceptor能够访问ActionContext、action和值栈等重要的对象;
     3. interceptor和action的生命周期是一样的,filter与request拥有一致的生命周期;

     不同的需求,可以在interceptor和Filter间有不同的选择;
评论
发表评论

提醒: 该博客已发表在公共论坛,博客所有留言会成为论坛回贴,留言请注意遵守论坛发贴规则

您还没有登录,请登录后发表评论

chineseoa
搜索本博客
我的相册
最近加入圈子
最新评论