SpringBoot入门到精通系列教程 - Filter/WebFilter
文章目录
- 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
- Order(x) 里面的x数值越小优先级越高
- 根据需要,可以重载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相关推荐
- 图解AI数学基础:从入门到精通系列教程(要点速查清单·完结)
作者:韩信子@ShowMeAI 教程地址:https://www.showmeai.tech/tutorials/83 声明:版权所有,转载请联系平台与作者并注明出处 引言 本系列教程展开讲解AI所需 ...
- 图解数据分析:从入门到精通系列教程
作者:韩信子@ShowMeAI 教程地址:https://www.showmeai.tech/tutorials/33 声明:版权所有,转载请联系平台与作者并注明出处 收藏ShowMeAI查看更多精彩 ...
- Angular入门到精通系列教程(6)- Angular的升级
文章目录 1. 摘要 2. https://update.angular.io/ 3. 总结 环境: Angular CLI: 11.0.6 Angular: 11.0.7 Node: 12.18.3 ...
- Angular入门到精通系列教程(15)- 目录结构(工程结构)推荐
文章目录 1. 概要 2. 目录结构(工程结构)推荐 2.1. 总的原则 2.2. 实例 2.3. 共享模块-SharedModule 3. 高级应用 - angular库.工作空间(workspac ...
- Angular入门到精通系列教程(1) - Angular,Vue,React 选型
1. 概述 总的来说一句话,如果你是老大,你可以选择用什么:如果你不是,那么,老大让用什么,你就用什么. 前端框架Angular,Vue,React三选一,没有第四种. (当然,如果只是一两个简单的页 ...
- Angular入门到精通系列教程(5)- 第三方UI库(Angular Material)
文章目录 1. 第三方UI库的选择 2. Angular Material 2.1. 优缺点 2.1.1. 优点 2.1.2. 缺点 2.2. 引入到项目 3. 总结 环境: Angular CLI: ...
- Angular入门到精通系列教程(2) - Angular基本概念
1. Angular (Angular2)v.s. AngularJS 2. 检查本地环境的版本 3. TypeScript 4. Angular CLI 5. Angular 的版本 6. Angu ...
- ArcGIS10从入门到精通系列实验图文教程(附配套实验数据持续更新)
文章目录 1. 专栏简介 2. 专栏地址 3. 专栏目录 1. 专栏简介 本教程<ArcGIS从入门到精通系列实验教程>内容包括:ArcGIS平台简介.ArcGIS应用基础.空间数据的采集 ...
- 【ArcGIS遇上Python】从入门到精通系列之第一章:ArcGIS Python简介
文章目录 1. Python简介 2. Python的特点 3. ArcGIS的脚本语言 4. ArcGIS中的Python脚本编辑器 1. Python简介 Python是一种跨平台的计算机程序设计 ...
最新文章
- TCP三次握手和四次挥手的解释
- 2021年大数据Hive(七):Hive的开窗函数
- 深度数据包检测DPI开发解析
- linux shell 三种自动交互 方法
- 使用深度学习框架 Tensorflow 实现线性回归 (Linear Model)
- 循环链表简单操作 C++
- c语言程序设计基础课本答案,c语言程序设计基础课后习题参考 答 案与解析.doc...
- 《调色师手册:电影和视频调色专业技法(第2版)》——监视器校准
- My Dad said
- 【CSS应用篇】——CSS如何实现渐变背景
- 百度搜索热点热搜怎么关闭?
- 一个简单的订单生成器 ---- 20160920
- Android开发之获取手机运行时间
- linux自动补全命令插件,vim自动补全插件snipMate
- Learning to ranking简介
- 几款常用压测工具介绍与使用
- r语言和python的区别-Python和R语言之分析对比
- 【CSS】【position】css中的position属性
- Navicat Premium 历史版本下载地址(官方)
- 多表查询时,执行速度耗时太多
热门文章
- PLSQL查询结果中文显示乱码
- python网络爬虫 百度网盘_百度网盘爬虫(如何爬取百度网盘)
- 【微信小程序云开发】使用云函数(node.js)实现多张图片转成pdf的功能,且pdf带水印
- 如何将网页打印成PDF文档?没看错,这个真可以!
- GAMES101作业7提高-实现微表面模型你需要了解的知识
- 一、考研数据结构笔记——引言及目录
- 一个前端工程师到底需要掌握哪些技能?
- 块级元素 div水平居中 垂直居中
- 一个UTILS判断来实现if else的equals多种判断结果
- 卷积神经网络算法python实现_卷积神经网络概述及python实现-阿里云开发者社区...