`
ldzyz007
  • 浏览: 700314 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

struts2自己定义拦截器

阅读更多
Interceptor(拦截器),顾名思义,就是在某个事件发生之前进行拦截,并插入某些处理
过程。Servlet 2.3规范中引入的Filter 算是拦截器的一个典型实现,它在Servlet执行之前被触发,对输入参数进行处理之后,再将工作流程传递给对应的Servlet。
而今年来兴起的AOP(Aspect Oriented Programming),更是将Interceptor 的作用提升到
前所未有的高度。
Xwork 的Interceptor 概念与之类似。即通过拦截Action 的调用过程,为其追加预处理
和后处理过程。

自定义一个拦截器需要三步:

1.自定义一个实现Interceptor接口(或者继承自AbstractInterceptor)的类。 Struts2提供MethodFilterInterceptor类,该类是AbstractInerceptor的子类,可以实现对Action方法的拦截.
  1.1 Interceptor接口声明了三个方法:
      public interface Interceptor extends Serializable {
           void destroy();
           void init();
           String intercept(ActionInvocation invocation) throws Exception;
      }
      Init方法在拦截器类被创建之后,在对Action镜像拦截之前调用,相当于一个post-  constructor方法,使用这个方法可以给拦截器类做必要的初始话操作。
      Destroy方法在拦截器被垃圾回收之前调用,用来回收init方法初始化的资源。
      Intercept是拦截器的主要拦截方法,如果需要调用后续的Action或者拦截器,只需要在该方法中调用 invocation.invoke()方法即可,在该方法调用的前后可以插入Action调用前后拦截器需要做的方法。如果不需要调用后续的方法,则返回一个String类型的对象即可,例如Action.SUCCESS。
  1.2 AbstractInterceptor提供了一个简单的Interceptor的实现,这个实现为:
      public abstract class AbstractInterceptor implements Interceptor {
          public void init() {}
          public void destroy() {}
          public abstract String intercept(ActionInvocation invocation) throws Exception;
      }
      在不需要编写init和destroy方法的时候,只需要从AbstractInterceptor继承而来,实现intercept方法即可。
  1.3 MethodFilterInterceptor中有两个方法  
      setExcludeMethods:排除需要过滤的方法     
      setIncludeMethods:设置需要过滤的方法     
      如果一个方法同时在excludeMethods和includeMethods中出现,则会被拦截

2.在strutx.xml中注册上一步中定义的拦截器。
3.在需要使用的Action中引用上述定义的拦截器,为了方便也可将拦截器定义为默认的拦截器,这样在不加特殊声明的情况下所有的Action都被这个拦截器拦截。
4.<default-interceptor-ref name="myStack"/>(这句是设置所有Action自动调用的拦截器堆栈)
5.Interceptor拦截类型
  5.1 before拦截,是指在拦截器中定义的代码,它们存在于invocation.invoke()代码执行之前。这些代码,将依照拦截器定义的顺序,顺序执行。
  5.2 after拦截,是指在拦截器中定义的代码,它们存在于invocation.invoke()代码执行之后。这些代码,将一招拦截器定义的顺序,逆序执行。
  5.3 PreResultListener拦截: 有的时候,before拦截和after拦截对我们来说是不够的,因为我们需要在Action执行完之后,但是还没有回到视图层之前,做一些事情。Struts2同样支持这样的拦截,这种拦截方式,是通过在拦截器中注册一个PreResultListener的接口来实现的。

分享到:
评论

相关推荐

    自定义拦截器struts2源代码

    通过struts2来自定义一个拦截器,需要定义struts2.xml和web.xml文件,详细代码见下载。

    Struts拦截器及token拦截器防止重复提交例子源码

    在访问被拦截的方法或字段时,Struts2拦截器链中的拦截器就会按其之前定义的顺序被调用。 二、实现Struts2拦截器原理 Struts2拦截器的实现原理相对简单,当请求struts2的action时,Struts 2会查找配置文件,并根据...

    struts2的核心.拦截器(拦截器的实现与定义让你轻松入门)

    提到拦截器,使我不得不想起武侠剧中劫匪们常说的一句话:“此山是我开,此树是我栽,要打此路过,留下买路财!”。难不成程序中也有“打劫”的,说的没错,拦截器就是个打劫的。在现实生活中,劫匪劫的大都是钱财,...

    struts2中拦截器的使用

    Struts2在com.opensymphony.xwork2.interceptor.annotations包中定义了3个拦截器注解类型。

    Struts2自定义拦截器实现防止重复提交

    由于struts2标签的性能不好,项目组决定不使用,但是如果用struts2自带的拦截器防止重复提交又必须struts标签,所以只好自定拦器实现

    Struts2 国际化字符串 拦截器

    2. 使用java.text.MessageFormat中的字符串格式,格式为{ 参数序号(从0开始), 格式类形(number | date | time | choice), 格式样式},例如: validation.between=Date must between {0, date, short} and {1, ...

    Struts2(4)拦截器与验证框架

    在struts2框架中主配置文件struts-defalut.xml 文件中定义了大量的拦截器和拦截器栈。通过 default-interceptor-ref元素定义了 当前应用的默认拦截器栈,对用户的每次请求都需要调用拦截器栈中的每个拦截器来拦截...

    理解拦截器用于在某个方法或字段被访

    谈到拦截器,还有一个词大家应该知道——拦截器链(Interceptor Chain,在Struts 2中称为拦截器栈Interceptor Stack)。拦截器链就是将拦截器按一定的顺序联结成一条链。在访问被拦截的方法或字段时,拦截器链

    拦截器和控制器的区别

    定义拦截器的包 &lt;package name="myPackage" extends="struts-default"&gt; 定义拦截器的核心 定义拦截器类 &lt;interceptor name="myInterceptor" class="util.MyInterceptor"&gt;&lt;/interceptor&gt; 定义拦截器的值栈空间...

    struts2讲义_吴峻申

    4.1 拦截器在Struts2中的缺省应用 47 4.2 拦截器原理实现 50 4.3 在Struts2中配置自定义的拦截器 53 4.3.1 扩展拦截器接口的自定义拦截器配置 54 4.3.2 继承抽象拦截器的自定义拦截器配置 56 4.3.3 继承方法拦截器的...

    struts学习笔记(2)

    当前struts2的filter过滤到一个.action结尾的请求的时候,会把这个请求交给struts2内部的拦截器(interceptor) 2)拦截器起到什么作用 可以帮我们丰富action的功能,比自动类型转换(页面传一个String类型的id,接收的...

    拦截器机制及其实现原理

    拦截器是Struts2框架的核心组成部分,通过本章的学习,应该掌握如下知识点: 了解AOP设计思想。 能够使用AOP设计思路,分离横切关注...掌握在Struts2应用中如何定义、配置及使用拦截器和拦截器栈 掌握拦截器的方法过滤

    jfreechar 整合struts2.1.8版本生成线图,饼图,柱形图

    -- 定义拦截器 name:拦截器名称 class:拦截器类路径 --&gt; &lt;interceptor name="timer" class="com.kay.timer"&gt;&lt;/interceptor&gt; &lt;interceptor name="logger" class="com.kay.logger"&gt;&lt;/interceptor&gt; ...

    深入浅出Struts2(附源码)

    本书是广受赞誉的Struts 2优秀教程,它全面而深入地阐述了Struts 2的各个特性,并指导开发人员如何根据遇到的问题对症下药,选择使用最合适的特性。作者处处从实战出发,在丰富的示例中直观地探讨了许多实用的技术,...

    struts2 详解文档

    自定义拦截器 对Action中所有方法进行输入校验 对Action指定方法进行校验 输入校验的流程 基于XML配置方式实现对action的所有方法进行校验 基于XML配置方式实现对指定action方法校验 配置国际化全局资源文件、...

    深入Struts2配置

    Struts2框架中核心组件就是Action、拦截器等,Struts2框架使用包来管理Action和拦截器等。每个包就是多个Action、多个拦截器、多个拦截器引用的集合。 在struts.xml文件中package元素用于定义包配置,每个package...

    struts2.0.jar

    · 引入拦截器: Struts 2为拦截器(interceptor)提供了全面支持。拦截器可在Action类执行前后加以执行。拦截器经配置后,可以把工作流程或者验证等常见功能作用到请求上。所有请求通过一组拦截器传送,之后再发送到...

Global site tag (gtag.js) - Google Analytics