Struts2——拦截器

来源:互联网 发布:数据分析师怎么样 编辑:程序博客网 时间:2024/05/17 04:01

Struts2的拦截器

1.拦截器原理

(1)请求Struts2的Action时,会先查找配置文件,实例化相应的拦截器对象并逐个调用,然后才会执行Action的execute方法。

(2)自定义拦截器,有三个步骤,a.编写拦截器类,实现com.opensymphony.xwork2.interceptor.Interceptor接口或继承AbstractInterceptor类。b.在struts.xml中定义自定义的拦截器。c.在struts.xml的Action中使用拦截器。

(3)自定义的拦截器类要重写intercept方法,其ActionInvocation类的参数代表它要拦截的Action,调用其invoke方法来将控制权下放给下一个拦截器或者Action的execute方法。

2.配置拦截器

(1)在struts.xml中配置拦截器,<package>标签下有<interceptors>标签,下面有多个<interceptor>标签。<interceptor>标签的属性有name(拦截器名)和class(拦截器类)。<interceptor>标签下还可以有<param>标签,给拦截器定义参数,有属性name(参数名)和内容(参数值)。若要获取这些参数,需要在拦截器类中定义与参数名同名的字段,并且定义相应的setter函数。

(2)可以将多个定义好的拦截器组成拦截器栈,使用<interceptor-stack>标签,有属性name(拦截器栈名),下面有多个<interceptor-ref>标签,有属性name(拦截器名)。且拦截器栈中不仅可以包含拦截器,还可以包含其他拦截器栈。

(3)使用拦截器,在struts.xml文件的action标签下添加<interceptor-ref>标签,name属性来制定拦截器或拦截器栈。系统默认拦截器栈为defaultStack。

(4)拦截器默认拦截Action的所有方法,也可以人为的过滤方法。让自定义的拦截器类继承MethodFilterInterceptor类,重写其doInterceptor方法、setExcludeMethods方法和setIncludeMethods方法。其中setExcludeMethods方法用来设置不被拦截的方法,setIncludeMethods方法用来设置要被拦截的方法,两者有冲突时以setIncludeMethods为准。然后配置struts.xml文件,在对应的<interceptor-ref>标签下加上<param>标签,name属性为setExcludeMethods或setIncludeMethods方法,内容为Action中要设置过滤的方法名。

3.Struts2內建的拦截器

內建拦截器可以完成请求参数解析,数据校验,文件上传控制等大部分功能,都被配置在struts-default.xml文件中,在配置struts.xml文件时,需要在<package>标签中继承这个文件:extends=“struts-default”。

1 0
原创粉丝点击