SpringBoot过滤器与拦截器的区别
相关设置见我的另一篇文章Spring设置https://www.cnblogs.com/face-to-machine-program/articles/16142167.html
这里参考了另一篇博客https://www.cnblogs.com/anenyang/p/15633565.html
SpringMVC的处理器拦截器类似于Servlet开发中的过滤器Filter,用于对处理器进行预处理和后处理
拦截器和过滤器的区别:拦截器是AOP思想的具体应用
过滤器:
Sevlet规范中的一部分,任何java web工程都可以使用(因此在web.xml中配置)
在Url-pattern中配置了/*后,可以对所有要访问的资源进行拦截
拦截器:
拦截器是Spring MVC框架中的,只有使用Spring MVC框架的工程才能使用(在applicationContext下配置)
拦截器只会拦截访问的控制器方法,如果访问的是Jsp/html/css/image/js是不会进行拦截的
这里主要强调一下应用场景的区分
拦截器:
-
登录验证,判断用户是否登录。
-
权限验证,判断用户是否有权限访问资源,如校验token
-
日志记录,记录请求操作日志(用户ip,访问时间等),以便统计请求访问量。
-
处理cookie、本地化、国际化、主题等。
-
性能监控,监控请求处理时长等。
-
通用行为:读取cookie得到用户信息并将用户对象放入请求,从而方便后续流程使用,还有如提取Locale、Theme信息等,只要是多个处理器都需要的即可使用拦截器实现)
过滤器:
- 过滤敏感词汇(防止sql注入)
- 设置字符编码
- URL级别的权限访问控制
- 压缩响应信息
本文来自博客园,作者:面向机器编程,转载请注明原文链接:https://www.cnblogs.com/face-to-machine-program/articles/16277313.html