java web 过滤器和拦截器的区别和使用

如题所述

过滤器与拦截器的区别

1. 拦截器是基于java的反射机制的,而过滤器是基于函数回调。

2. 拦截器不依赖与servlet容器,过滤器依赖与servlet容器。 

3. 拦截器只能对action请求起作用,而过滤器则可以对几乎所有的请求起作用。

4. 拦截器可以访问action上下文、值栈里的对象,而过滤器不能访问。 

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

过滤器定义:

<filter>
  <filter-name>TestFilter</filter-name>
  <filter-class>com.filter.TestFilter</filter-class>
</filter>
<filter-mapping>
  <filter-name>TestFilter</filter-name>
  <url-pattern>/*</url-pattern>
</filter-mapping>

拦截器定义:

<interceptors>
  <interceptor name="testInterceptor" class="com.xxxx.TestInterceptor" />
  <interceptor-stack name="filterIPStack">
    <interceptor-ref name="testInterceptor" />
  </interceptor-stack>
</interceptors>

温馨提示:内容为网友见解,仅供参考
无其他回答
相似回答