有天上飞的概念,就要有落地的实现

  • 概念十遍不如代码一遍,朋友,希望你把文中所有的代码案例都敲一遍
  • 先赞后看,养成习惯

SpringBoot 图文系列教程技术大纲

SpringBoot 图文教程系列文章目录

  1. SpringBoot图文教程1「概念+案例 思维导图」「基础篇上」
  2. SpringBoot图文教程2—日志的使用「logback」「log4j」
  3. SpringBoot图文教程3—「‘初恋’情结」集成Jsp
  4. SpringBoot图文教程4—SpringBoot 实现文件上传下载
  5. SpringBoot图文教程5—SpringBoot 中使用Aop

前言

过滤器是Javaweb非常基础的一个概念,属于Servlet的一部分。本文将会使用SpringBoot配置过滤器。在代码实现之前先通过一个简单的小案例解释一下什么是过滤器。

过滤器filter的概念:Servlet中提供的技术,可以过滤浏览器发出的请求,并且决定放行请求还是中断请求。

  • 浏览器对服务器的请求,会先经过过滤器,再到达服务器
  • 服务器对浏览器的响应,也会先经过过滤器,最后再响应给浏览器
  • 基于过滤器的机制,我们可以在过滤器中对请求和响应做一些处理,可以在过滤器中决定是否放行,例如:校验请求中有没有敏感字符串,校验有没有Session等。

举个栗子:

  • 过滤器就像疫情期间村口的路卡,你不管进村儿还是出村儿都需要经过路卡
  • 路卡的工作人员(过滤器)会在你经过的时候对你做一些”操作“,量量体温,问询一下,然后对你一些处理,放行或者让你原路返回。

SpringBoot中过滤器的使用

本文所有的内容,将会在下面的demo上进行操作。 请去Git仓库下载:https://gitee.com/bingqilinpeishenme/Lu-JavaNodes

1.创建过滤器类

/*** @WebFilter时Servlet3.0新增的注解,原先实现过滤器,需要在web.xml中进行配置,而现在通过此注解,启动启动时会自动扫描自动注册。** @WebFilter filterName 定义注册的过滤器的名字* urlPatterns 定义要拦截所有的请求**/
@WebFilter(filterName="userFilter",urlPatterns={"/*"})
public class UserFilter implements Filter {Logger logger = LoggerFactory.getLogger(UserFilter.class);@Overridepublic void init(FilterConfig filterConfig) throws ServletException {logger.info("过滤器初始化");}@Overridepublic void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {logger.info("请求处理");HttpServletRequest request = (HttpServletRequest) servletRequest;HttpServletResponse response = (HttpServletResponse) servletResponse;
//        简单的session校验if (request.getSession().getAttribute("user")!=null) {//        请求放行filterChain.doFilter(request, response);}else {}}@Overridepublic void destroy() {logger.info("销毁");}
}

2.SpringBoot配合过滤器扫描

@WebFilter时Servlet3.0新增的注解,原先实现过滤器,需要在web.xml中进行配置,而现在通过此注解,启动启动时会自动扫描自动注册。

在SpringBoot中配置过滤器扫描只需要在启动类加入@ServletComponentScan注解即可。

3.设置多个过滤器的执行顺序

你一定听过这样的一个词儿:过滤器链路,什么是过滤器链路呢?就是有多个过滤器,就像有多个路卡是一样一样的。当你有多个过滤器之后,就需要规定各个过滤器的指定顺序了。那么怎么指定过滤器的执行顺序呢?

SpringMvc中通过web.xml可以设置

在SpringBoot中可以通过FilterRegistrationBean进行过滤器的注册。

  1. 创建两个Filter类 删除@WebFilter注解即可
  1. 在启动类中通过@Bean的方式配置FilterRegistrationBean
@SpringBootApplication
@ServletComponentScan
public class AppRun {public static void main(String[] args) {//        参数:启动类类对象 主函数形参名SpringApplication.run(AppRun.class,args);}@Beanpublic FilterRegistrationBean  filterRegistrationBean(UserFilter userFilter) {FilterRegistrationBean registration = new FilterRegistrationBean();registration.setFilter(userFilter);//过滤器名称registration.setName("userFilter");//拦截路径registration.addUrlPatterns("/*");//设置顺序registration.setOrder(10);return registration;}@Beanpublic FilterRegistrationBean  filterRegistrationBean2(User2Filter user2Filter) {FilterRegistrationBean registration = new FilterRegistrationBean();
//        设置过滤器registration.setFilter(user2Filter);//过滤器名称registration.setName("user2Filter");//拦截路径registration.addUrlPatterns("/*");//设置顺序registration.setOrder(20);return registration;}@Beanpublic UserFilter userFilter(){return new UserFilter();}@Beanpublic User2Filter user2Filter(){return new User2Filter();}
}

注册多个时,就注册多个FilterRegistrationBean即可。启动之后的效果如下:

总结

以上就是SpringBoot中过滤器的简单使用,本文为基础篇,所以关于过滤器的应用会在后续文章中写出。

恭喜你完成了本章的学习,为你鼓掌!如果本文对你有帮助,请帮忙点赞,评论,转发,这对作者很重要,谢谢。

让我们再次回顾本文的学习目标

  • 掌握SpringBoot中过滤器的使用

要掌握SpringBoot更多的用法,请持续关注本系列教程。

下面体贴的我给朋友萌还准备了一些 自测面试题和项目案例,希望你能够成热打铁,将知识夯扎实。

上期自测面试题答案

见面试题集锦 https://gitee.com/bingqilinpeishenme/Lu-JavaNodes

自测面试题(答案见下期)

上期自测实现项目小案例答案

见码云仓库 https://gitee.com/bingqilinpeishenme/Lu-JavaNodes

自测实现项目小案例(答案见下期)

本次需求:

练习文中demo

求关注,求点赞,求转发

springboot处理参数再转发请求_SpringBoot图文教程6—SpringBoot中过滤器的使用相关推荐

  1. springboot处理参数再转发请求_SpringBoot是如何解析HTTP参数的

    前言 前几天笔者在写Rest接口的时候,看到了一种传值方式是以前没有写过的,就萌生了一探究竟的想法.在此之前,有篇文章曾涉及到这个话题,但那篇文章着重于处理流程的分析,并未深入. 本文重点来看几种传参 ...

  2. springboot处理参数再转发请求_Springboot 2.0---WebFlux请求处理流程

    笔记是学习了小马哥在慕课网的课程的<Spring Boot 2.0深度实践之核心技术篇>的内容结合自己的需要和理解做的笔记. 前言 在了解了WebFlux核心组件之后,我们就该了解相应的请 ...

  3. springboot文件上传和下载工具_SpringBoot图文教程7—SpringBoot拦截器的使用姿势这都有...

    有天上飞的概念,就要有落地的实现 概念十遍不如代码一遍,朋友,希望你把文中所有的代码案例都敲一遍 先赞后看,养成习惯 SpringBoot 图文教程系列文章目录 SpringBoot图文教程1「概念+ ...

  4. springboot改文件头_SpringBoot图文教程4—SpringBoot 实现文件上传下载

    有天上飞的概念,就要有落地的实现 概念+代码实现是本文的特点,教程将涵盖完整的图文教程,代码案例 文章结尾配套自测面试题,学完技术自我测试更扎实 概念十遍不如代码一遍,朋友,希望你把文中所有的代码案例 ...

  5. easypoi教程_SpringBoot图文教程17—上手就会 RestTemplate 使用指南

    有天上飞的概念,就要有落地的实现 概念十遍不如代码一遍,朋友,希望你把文中所有的代码案例都敲一遍 先赞后看,养成习惯 SpringBoot 图文教程系列文章目录 SpringBoot图文教程1-Spr ...

  6. SpringBoot图文教程9—SpringBoot 导入导出 Excel 「Apache Poi」(亲测)

    有天上飞的概念,就要有落地的实现 概念十遍不如代码一遍,朋友,希望你把文中所有的代码案例都敲一遍 先赞后看,养成习惯 来源:Springboot使用POI实现导出Excel文件示例的搜索结果-阿里云开 ...

  7. SpringBoot图文教程9—SpringBoot 导入导出 Excel 「Apache Poi」

    有天上飞的概念,就要有落地的实现 概念十遍不如代码一遍,朋友,希望你把文中所有的代码案例都敲一遍 先赞后看,养成习惯 SpringBoot 图文教程系列文章目录 SpringBoot图文教程1「概念+ ...

  8. SpringBoot图文教程8 — SpringBoot集成MBG「代码生成器」

    有天上飞的概念,就要有落地的实现 概念十遍不如代码一遍,朋友,希望你把文中所有的代码案例都敲一遍 先赞后看,养成习惯 SpringBoot 图文教程系列文章目录 SpringBoot图文教程1「概念+ ...

  9. SpringBoot图文教程4—SpringBoot 实现文件上传下载(亲测)

    SpringBoot 图文教程系列文章目录 SpringBoot图文教程1「概念+案例 思维导图」「基础篇上」 SpringBoot图文教程2-日志的使用「logback」「log4j」 Spring ...

最新文章

  1. 对系统故障处理的思考
  2. ans_rproxy 说明
  3. Android调试之tombstone信息的分析
  4. 游戏行业全场景数字化解决方案全面上线,速来围观
  5. 如何安装部署秋色园QBlog站点
  6. Asp.net MVC2.0系列文章-编辑和删除新闻操作
  7. Centos/ubuntu配置SVN服务
  8. 6.Xilinx RapidIO核仿真与包时序分析
  9. pom.xml详细说明
  10. C++中new和malloc
  11. Spark基础学习笔记08:Scala简介与安装
  12. 杨潮观《偷桃捉住东方朔》
  13. layUI数据表格可编辑表格单元格值修改之后获取修改前的值
  14. EXCEL出错 8000401a
  15. 春节怎么抢红包,python一招告诉你再也不会错过微信红包
  16. 谷歌SEO之如何使用Ahrefs工具选择关键词(2022更新教程)
  17. 云计算数据中心的特点
  18. 在Xubuntu上安装中文输入法
  19. python3 正则匹配特殊符号_Python3 正则表达式特殊符号及用法(详细列表)
  20. PySpark线性回归与广义线性模型

热门文章

  1. Python入门学习之函数
  2. Image Watch的使用示例
  3. python ioc di_Spring介绍,IOC(控制反转),DI(依赖注入)介绍及两种注入方法
  4. 办公用笔记本电脑哪个好_北京中仓红色办公沙发哪个品牌好
  5. [詹兴致矩阵论习题参考解答]习题6.6
  6. stm32内部的CAN总线
  7. sql 备份.bat
  8. jQuery中FormData的使用
  9. ACM训练小结-2018年6月19日
  10. CodeForces - 993E Nikita and Order Statistics