struts2拦截器配置小知识

来源:互联网 发布:黄金分析软件哪个好 编辑:程序博客网 时间:2024/03/29 15:34

关于拦截器

 

1、 通常情况下,拦截器都是通过代理的方式调用。拦截器必须先定义再调用,定义时需要指定name属性和class属性。拦截器栈和普通的拦截器一样使用。

2、 如果继承了struts-default包,那也就继承了默认拦截器栈defaultStack,这就意味着如果在子包中没有为Action指定拦截器,则defaultStack拦截器栈将对Action执行拦截。如果开发者为Action指定其他拦截器(栈),则系统不再使用默认拦截器栈拦截该Action。

3、  拦截器的配置元素表

  

元素名称

说明

<interceptors>

用来定义拦截器,所有拦截器与拦截器栈都在此元素在定义。可以包含子元素<interceptor>和<interceptor-stack>

<interceptor>

用来定义拦截器栈,需要指定两个属性,name属性用来指定拦截器的名字,class指定其实现类

<interceptor-stack>

用来定义拦截器栈,需要指定name属性,另外i可以通过子元素<interceptor-ref>引人其他拦截器或拦截器栈

<interceptor-ref>

用来引入其他拦截器或拦截器栈,可以作为<interceptor-stack>和<action>的子元素

<param>

用来为拦截器指定参数,可以作为<interceptor>和<interceptor-ref>的子元素

<default-interceptor-ref>

将某个拦截器自定义为默认拦截器

4、 自定义拦截器类:需要实现Interceptor接口或者继承抽象拦截器类AbstractInterceptor。一般选择继承这个抽象类,这样只需重写intercept()方法。

实例:创建一个拦截器实现类MyInterceptor。

5、 注意在struts.xml中配置好自定义的拦截器后,还需要引用系统默认的拦截器栈defaultStack,因为只有这样,用户提交的数据才能保存为Action的属性值。

6、 拦截器方法的过滤:在使用拦截器时,可以通过将<interceptor-ref>的子元素<param>的属性值设置为excludeMethods来指定拒绝拦截的方法,和通过值includeMethods来指定需要拦截的方法。默认拦截相关Action的所有方法。

7、 拦截器的执行顺序:在execute()方法执行之前,先配置的拦截器先执行,之后,先配置的后执行。

8、 拦截器结果监听器:在execute()方法执行之后,系统处理result之前。实现拦截结果的拦截器,需要实现PreResultListener接口的beforeResult()方法,并在相关的自定义的拦截器内通过addResultListener()方法注册即可。

9、 设置拦截器的参数,一般用<param>指定。既可以在定义拦截器时指定相关参数的值,也可以在使用时再定义或者覆盖拦截器参数的值。如果想在使用时覆盖拦截器栈中已经赋好值的参数,则使用拦截其名.参数名,可实现目的。

0 0