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级别的权限访问控制
  • 压缩响应信息

 

 

 

posted @ 2022-05-16 16:04  面向机器编程  阅读(288)  评论(0编辑  收藏  举报