文章目录

  • 1. Filter简介
    • 1.1. SpringBoot 中Filter的作用
    • 1.2. @WebFilter
  • 2. 基于@WebFilter的实现
    • 2.1. SpringbootApplication方法上加上启动扫描
    • 2.2. 新建Filter
    • 2.3. 关于WebFilter
  • 3. 总结

1. Filter简介

通过Filter技术,对各种资源:例如API, JSP,Servlet,静态图片文件或静态HTML文件进行拦截,从而实现一些特殊功能。如实现token校验,URL级别的权限控制、过滤敏感词汇、额外记录日志、压缩响应信息等一些高级功能。

1.1. SpringBoot 中Filter的作用

  • 在request被处理前,预处理,或者修改request。比如,所有的api都要做鉴权处理,通过后才会被业务逻辑处理,这部分逻辑就可以卸载Filter中。
  • 修改一个response,比如附加一些额外的信息再返回给Client。
  • 可以定义多个Filter,并指定执行的顺序。

1.2. @WebFilter

Servlet3+ 额外增加的WebFilter注释, 方便处理Web应用中的场景。

2. 基于@WebFilter的实现

环境:

  • Java 1.8.0_05
  • Spring Boot: 2.4.1
  • IDE: Intellj IDEA 2020.3

2.1. SpringbootApplication方法上加上启动扫描

@ServletComponentScan
@SpringBootApplication
public class TodoApiApplication {// ... ...
}

2.2. 新建Filter

@WebFilter(filterName = "AuthFilter", urlPatterns = {"/todo-api/v1/tasks/*", "/todo-api/v1/order/*"})
@Order(1)
public class AuthFilter implements Filter {@Overridepublic void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain)throws IOException, ServletException {HttpServletRequest request = (HttpServletRequest) servletRequest;// 预处理 Request// "Request - "+ request.getMethod() + ":"+ request.getRequestURI()// ... ...// 最后,让其他servlet或者Filter继续处理filterChain.doFilter(servletRequest,servletResponse);}
}

2.3. 关于WebFilter

  1. Order(x) 里面的x数值越小优先级越高
  2. 根据需要,可以重载init,destroy方法
    @Overridepublic void init(FilterConfig filterConfig) throws ServletException {System.out.println("过滤器创建");}@Overridepublic void destroy() {System.out.println("过滤器销毁");}

3. 总结

Filter (@WebFilter) 用于拦截Web请求,进行预处理,或者修改Response再返回给客户端。

---------- END ----------

SpringBoot入门到精通系列教程 - Filter/WebFilter相关推荐

  1. 图解AI数学基础:从入门到精通系列教程(要点速查清单·完结)

    作者:韩信子@ShowMeAI 教程地址:https://www.showmeai.tech/tutorials/83 声明:版权所有,转载请联系平台与作者并注明出处 引言 本系列教程展开讲解AI所需 ...

  2. 图解数据分析:从入门到精通系列教程

    作者:韩信子@ShowMeAI 教程地址:https://www.showmeai.tech/tutorials/33 声明:版权所有,转载请联系平台与作者并注明出处 收藏ShowMeAI查看更多精彩 ...

  3. Angular入门到精通系列教程(6)- Angular的升级

    文章目录 1. 摘要 2. https://update.angular.io/ 3. 总结 环境: Angular CLI: 11.0.6 Angular: 11.0.7 Node: 12.18.3 ...

  4. Angular入门到精通系列教程(15)- 目录结构(工程结构)推荐

    文章目录 1. 概要 2. 目录结构(工程结构)推荐 2.1. 总的原则 2.2. 实例 2.3. 共享模块-SharedModule 3. 高级应用 - angular库.工作空间(workspac ...

  5. Angular入门到精通系列教程(1) - Angular,Vue,React 选型

    1. 概述 总的来说一句话,如果你是老大,你可以选择用什么:如果你不是,那么,老大让用什么,你就用什么. 前端框架Angular,Vue,React三选一,没有第四种. (当然,如果只是一两个简单的页 ...

  6. Angular入门到精通系列教程(5)- 第三方UI库(Angular Material)

    文章目录 1. 第三方UI库的选择 2. Angular Material 2.1. 优缺点 2.1.1. 优点 2.1.2. 缺点 2.2. 引入到项目 3. 总结 环境: Angular CLI: ...

  7. Angular入门到精通系列教程(2) - Angular基本概念

    1. Angular (Angular2)v.s. AngularJS 2. 检查本地环境的版本 3. TypeScript 4. Angular CLI 5. Angular 的版本 6. Angu ...

  8. ArcGIS10从入门到精通系列实验图文教程(附配套实验数据持续更新)

    文章目录 1. 专栏简介 2. 专栏地址 3. 专栏目录 1. 专栏简介 本教程<ArcGIS从入门到精通系列实验教程>内容包括:ArcGIS平台简介.ArcGIS应用基础.空间数据的采集 ...

  9. 【ArcGIS遇上Python】从入门到精通系列之第一章:ArcGIS Python简介

    文章目录 1. Python简介 2. Python的特点 3. ArcGIS的脚本语言 4. ArcGIS中的Python脚本编辑器 1. Python简介 Python是一种跨平台的计算机程序设计 ...

最新文章

  1. TCP三次握手和四次挥手的解释
  2. 2021年大数据Hive(七):Hive的开窗函数
  3. 深度数据包检测DPI开发解析
  4. linux shell 三种自动交互 方法
  5. 使用深度学习框架 Tensorflow 实现线性回归 (Linear Model)
  6. 循环链表简单操作 C++
  7. c语言程序设计基础课本答案,c语言程序设计基础课后习题参考 答 案与解析.doc...
  8. 《调色师手册:电影和视频调色专业技法(第2版)》——监视器校准
  9. My Dad said
  10. 【CSS应用篇】——CSS如何实现渐变背景
  11. 百度搜索热点热搜怎么关闭?
  12. 一个简单的订单生成器 ---- 20160920
  13. Android开发之获取手机运行时间
  14. linux自动补全命令插件,vim自动补全插件snipMate
  15. Learning to ranking简介
  16. 几款常用压测工具介绍与使用
  17. r语言和python的区别-Python和R语言之分析对比
  18. 【CSS】【position】css中的position属性
  19. Navicat Premium 历史版本下载地址(官方)
  20. 多表查询时,执行速度耗时太多

热门文章

  1. PLSQL查询结果中文显示乱码
  2. python网络爬虫 百度网盘_百度网盘爬虫(如何爬取百度网盘)
  3. 【微信小程序云开发】使用云函数(node.js)实现多张图片转成pdf的功能,且pdf带水印
  4. 如何将网页打印成PDF文档?没看错,这个真可以!
  5. GAMES101作业7提高-实现微表面模型你需要了解的知识
  6. 一、考研数据结构笔记——引言及目录
  7. 一个前端工程师到底需要掌握哪些技能?
  8. 块级元素 div水平居中 垂直居中
  9. 一个UTILS判断来实现if else的equals多种判断结果
  10. 卷积神经网络算法python实现_卷积神经网络概述及python实现-阿里云开发者社区...