struts2中的拦截器

来源:互联网 发布:汉仪小麦体 mac 编辑:程序博客网 时间:2024/05/22 10:30

一、理解拦截器

1. Struts2拦截器是在访问某个Action或Action的某个方法,字段之前或之后实施拦截,并且Struts2拦截器是可插拔的,拦截器是AOP的一种实现.

2. 拦截器栈(Interceptor Stack)。Struts2拦截器栈就是将拦截器按一定的顺序联结成一条链。在访问被拦截的方法或字段时,Struts2拦截器链中的拦截器就会按其之前定义的顺序被调用。

二、实现拦截器原理

Struts2拦截器的实现原理相对简单,当请求struts2的action时,Struts 2会查找配置文件,并根据其配置实例化相对的    拦截器对象,然后串成一个列表,最后一个一个地调用列表中的拦截器

三、定义拦截器。

1. 自定义拦截器(Inteceptor)。自定义拦截器必须实现com.opensymphony.xwork2.interceptor.Interceptor接口。该接口声明了3个方法,其中,init()和destroy()方法会在程序开始和结束时各执行一遍,不管使用了该拦截器与否,只要在struts.xml中声明了该Struts2拦截器就会被执行。
intercept方法就是拦截的主体了,每次拦截器生效时都会执行其中的逻辑。

2.AbstractInterceptor(抽象类),使用时必须继承该类,其中AbstractInterceptor提供了init()和destroy()的空实现,使用时只需要覆盖intercept()方法;
3.MethodFilterInterceptor(抽象类),使用时必须继承该类,只须覆盖doIntercept()方法即可