SpringMVC的拦截器(Interceptor)和过滤器(Filter)的区别与联系

本文详细阐述了Servlet过滤器(Filter)与SpringMVC拦截器(Interceptor)的区别及应用场景。过滤器依赖于servlet容器,适用于几乎所有HTTP请求的预处理工作,如字符编码设置和非法字符过滤等。而拦截器则依赖于SpringMVC框架,主要用于controller请求的拦截,适用于更具体的业务逻辑处理。
1.过滤器:

  依赖于servlet容器。在实现上基于函数回调,可以对几乎所有请求进行过滤,但是缺点是一个过滤器实例只能在容器初始化时调用一次。使用过滤器的目的是用来做一些过滤操作,获取我们想要获取的数据.

  比如:在过滤器中修改字符编码;在过滤器中修改 HttpServletRequest的一些参数,包括:过滤低俗文字、危险字符等

  关于过滤器的一些用法可以参考我写过的这些文章:

    继承HttpServletRequestWrapper以实现在Filter中修改HttpServletRequest的参数:https://www.zifangsky.cn/677.html

    在SpringMVC中使用过滤器(Filter)过滤容易引发XSS的危险字符:https://www.zifangsky.cn/683.html

2.拦截器:

  依赖于web框架,在SpringMVC中就是依赖于SpringMVC框架。在实现上基于Java的反射机制,属于面向切面编程(AOP)的一种运用。由于拦截器是基于web框架的调用.

  因此可以使用spring的依赖注入(DI)进行一些业务操作,同时一个拦截器实例在一个controller生命周期之内可以多次调用。但是缺点是只能对controller请求进行拦截,对其他的一些比如直接访问静态资源的请求则没办法进行拦截处理。

  关于拦截器的一些用法可以参考我写过的这些文章:

    [size=medium][color=red][b]SpringMVC中使用拦截器(interceptor)拦截CSRF攻击[/b][/color][/size](修):
[url]https://www.zifangsky.cn/671.html[/url]
    [size=medium][color=red][b]SpringMVC中使用Interceptor+cookie实现在一定天数之内自动登录[/b][/color][/size]:
[url]https://www.zifangsky.cn/700.html[/url]

3.执行顺序

  过滤器的运行是依赖于servlet容器的,跟springmvc等框架并没有关系。并且多个过滤器的执行顺序跟web.xml文件中定义的先后关系有关。

  拦截器的执行顺序跟在SpringMVC的配置文件中定义的先后顺序有关。

[url]http://www.cnblogs.com/michaelShao/p/6693661.html[/url]

上传附件,限制了10M,所以把原有的mybatis-3.3.1.jar从lib里删除了,在运行时,需要把mybatis-3.3.1.jar再添加进去

[size=large][color=red][b]SpringMVC拦截器[/b][/color][/size]
[url]https://www.cnblogs.com/Leo_wl/p/3779547.html[/url]

[size=large][color=red][b]处理器拦截器(HandlerInterceptor)详解[/b][/color][/size]
[url]http://www.jianshu.com/p/1e8d088c2be9[/url]

[size=large][color=red][b]springMVC:HandlerInterceptor拦截器的使用[/b][/color][/size]
[url]https://www.cnblogs.com/sunp823/p/5601396.html[/url]
[url]http://blog.youkuaiyun.com/qwe6112071/article/details/51099437[/url]
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值