【Struts2】⑥拦截器

来源:互联网 发布:c语言中取整怎么表示 编辑:程序博客网 时间:2024/05/24 15:37

1.拦截器与过滤器的区别:

拦截器是基于java的反射机制的,而过滤器是基于函数回调。(关于反射和回调)

拦截器不依赖与servlet容器,而过滤器依赖与servlet容器。
拦截器只能对action请求起作用,而过滤器则可以对几乎所有的请求起作用。
拦截器可以访问action上下文、值栈里的对象,而过滤器不能。

在action的生命周期中,拦截器可以多次被调用,而过滤器只能在容器初始化时被调用一次。

2.拦截器的配置:

配置方式很常规,就是在struts.xml文件里面配置

普通拦截器:

 <action name="Action名" class="Action类"><interceptor-ref name="defaultStack"></interceptor-ref><interceptor-ref name="拦截器1"></interceptor-ref><interceptor-ref name="拦截器2"></interceptor-ref>  </action>

注:如果名称相同,前面的会被后面的拦截器覆盖掉

拦截器栈:

 <interceptors>           <interceptor-stack name="myStack">              <interceptor-ref name="defaultStack"></interceptor-ref> <interceptor-ref name="拦截器1"></interceptor-ref> <interceptor-ref name="拦截器2"></interceptor-ref>            </interceptor-stack>       </interceptors>       <action name="Action名" class="Action类">              <interceptor-ref name="myStack"></interceptor-ref>  </action>

3.拦截器的实现方式:

其实现方法有:实现Interceptor接口继承AbstractInterceptor类继承MethodFilterInterceptor类

4.一旦定义了自己的拦截器,将其配置到action上后,我们需要在写拦截器之前加上默认的拦截器栈:defaultStack。(详见以上xml配置举例)


0 0
原创粉丝点击