拦截器(Interceptor)过滤器(Filter)区别

过滤器和拦截器有如下结论:
(1)、Filter需要在web.xml中配置,依赖于Servlet;

<filter> 
<filter-name>encoding</filter-name> 
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> <init-param> 
    <param-name>encoding</param-name> 
    <param-value>UTF-8</param-value>
</init-param> 
<init-param> 
    <param-name>forceEncoding</param-name> 
    <param-value>true</param-value> 
</init-param> 
</filter> 

<filter-mapping> 
    <filter-name>encoding</filter-name> 
    <servlet-name>/*</servlet-name> 
</filter-mapping>


(2)、Interceptor需要在SpringMVC中配置,依赖于框架;

<mvc:interceptors>
    <mvc:interceptor>
        <mvc:mapping path="/**" />
        <bean class="com.scorpios.atcrowdfunding.web.LoginInterceptor"></bean>
    </mvc:interceptor>
    <mvc:interceptor>
        <mvc:mapping path="/**" />
        <bean class="com.scorpios.atcrowdfunding.web.AuthInterceptor"></bean>
    </mvc:interceptor>
</mvc:interceptors>


(3)、Filter的执行顺序在Interceptor之前,具体的流程见下图;

(4)、两者的本质区别:拦截器(Interceptor)是基于Java的反射机制,而过滤器(Filter)是基于函数回调。从灵活性上说拦截器功能更强大些,Filter能做的事情,都能做,而且可以在请求前,请求后执行,比较灵活。Filter主要是针对URL地址做一个编码的事情、过滤掉没用的参数、安全校验(比较泛的,比如登录不登录之类),太细的话,还是建议用interceptor。不过还是根据不同情况选择合适的。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值