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

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

SpringBoot 图文教程系列文章目录

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

本文内容

前言

拦截器是Spring中的概念,和过滤器类似,可以对用户请求进行拦截过滤处理。但是相对于过滤器而言,拦截器要的控制更加的细节,拦截器可以在三个地方进行执行。

  • 可以在请求到达Controller控制器之前 通过拦截器执行一段代码
  • 也可以在控制器执行之后,通过拦截器执行一段代码 【此时只是Controller执行完毕 视图还没有开始渲染】
  • 最后在整个请求结束的时候还可以通过拦截器执行一段时间代码

整个工作过程如下图

SpringBoot中拦截器的使用

需求:在项目中创建一个UserController,然后在UserController的前后使用拦截器打印一些信息

所以首先我们开发一个UserController

拦截器使用的开发步骤

  1. 创建拦截器类
  2. 注册拦截器 配置拦截规则
  3. 创建拦截器类
/*** @Component 和 @Service 是一个作用 创建对象*/
@Component
public class MyInterceptor1 implements HandlerInterceptor {Logger logger = LoggerFactory.getLogger(MyInterceptor1.class);/*** 在请求到达Controller控制器之前 通过拦截器执行一段代码* 如果方法返回true,继续执行后续操作* 如果返回false,执行中断请求处理,请求不会发送到Controller*/@Overridepublic boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {logger.info("拦截器1 在控制器执行之前执行");return true;}/*** 控制器之后,跳转前*/@Overridepublic void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {logger.info("拦截器1 在控制器执行之后执行");}/*** 跳转之后执行*/@Overridepublic void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {logger.info("拦截器1 最后执行");}
}

  1. 注册拦截器,配置拦截规则
@Configuration
public class WebMvcConfig implements WebMvcConfigurer {@Autowiredprivate MyInterceptor1 myInterceptor1;/*** 注册拦截器* @param registry*/@Overridepublic void addInterceptors(InterceptorRegistry registry) {/*** addInterceptor 注册拦截器* addPathPatterns 配置拦截规则*/registry.addInterceptor(myInterceptor1).addPathPatterns("/**");}
}

细节补充

postHandle方法中ModelAndView参数

在postHandle方法中有一个参数是ModelAndView。这个对象在SpringMvc中是一个关键对象,可以进行参数传递和路径跳转。

ModelAndView
向request作用域存入数据:mav.addObject("作用域数据的name",值);
设置跳转路径:mav.setViewName("跳转方式:/目标资源url-pattern");
作用: model作用+跳转路径的作用public ModelAndView xxx(ModelAndView mav){
//1. 向requset作用域存入一个数据
mav.addObject("name",值);
//2. 跳转到xxx.jsp
mav.setViewName("跳转方式:/目标资源url-pattern");return mav;
}

通过ModelAndView 我们可以在 postHandle方法中 操作作用域的值 和 设置修改跳转路径

一次性拦截多个路径

在注册拦截器的时候 配置拦截路径的addPathPatterns参数为可变长参数,就意味着可以接受String的数组,可以配置多个参数。

addPathPatterns方法的源码如下

排除拦截路径

注册多个拦截器

我们可以实现多个拦截器,并依次将他们注册进去

public void addInterceptors(InterceptorRegistry registry) {registry.addInterceptor(myInterceptor1).addPathPatterns("/**");registry.addInterceptor(myInterceptor2).addPathPatterns("/**");}

关于多个拦截器的执行顺序设置

  1. 在不做任何设置的时候,多个拦截器的执行顺序和注册的顺序有关,先注册的先执行
  1. 也可以通过Order方法来设置 执行的顺序 值越小越先执行

总结

以上就是SpringBoot中拦截器的简单使用。

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

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

  • 掌握SpringBoot中拦截器的使用

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

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

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

  • 拦截器和过滤器有什么区别?

上期自测面试题答案,见面试题集锦 https://gitee.com/bingqilinpeishenme/Lu-JavaNodes

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

本次需求:

练习文中demo

上期自测实现项目小案例答案,见码云仓库 https://gitee.com/bingqilinpeishenme/Lu-JavaNodes

求关注,求点赞,求转发

欢迎关注本人公众号:鹿老师的Java笔记,将在长期更新Java技术图文教程和视频教程,Java学习经验,Java面试经验以及Java实战开发经验。

http://weixin.qq.com/r/qDlMVH-EKCJXrTs392y6 (二维码自动识别)

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

  1. springboot文件上传、下载使用ftp工具将文件上传至服务器

    springboot文件上传.下载使用ftp工具 首先在服务器搭建ftp服务 配置文件(在application.properties中) # Single file max size multipa ...

  2. SpringBoot文件上传和下载

    SpringBoot文件上传和下载 一.SpringBoot文件上传 1.SpringMVC文件上传 1.Client处理 选择文件(1)form表单 选择文件 method="post&q ...

  3. SpringBoot 文件上传、下载、设置大小

    本文使用SpringBoot的版本为2.0.3.RELEASE 1.上传单个文件 ①html对应的提交表单 <form action="uploadFile" method= ...

  4. springboot文件上传和下载(批量/单个)

    前言 用springboot + jpa,批量上传.下载,一般批量下载处理方式都是将多个文件压缩成一个压缩包,然后在下载,主要的坑在于本地上传和下载都正常,部署在服务器上会出现各种错误,比如找不到路径 ...

  5. 阿里云OSS对象存储(文件上传与下载)宝宝级教程

    1.注册自己的阿里云账号 2.登录账号以后,进入主页面搜索"对象存储OSS 然后可以看到如下界面 立即购买,自己学习使用可以选择购买最小的存储空间,半年即可 管理控制台,购买了存储空间以后可 ...

  6. SpringBoot文件上传与下载

    文章目录 上传文件代码 设置文件大小限制 配置静态资源访问 测试 上传文件代码 package com.example.demo.controller;import org.springframewo ...

  7. springboot文件上传下载实战 —— 登录功能、展示所有文件

    springboot文件上传下载实战 创建项目 pom.xml 数据库建表与环境准备 建表SQL 配置文件 application.properties 整体架构 前端页面 登录页面 login.ht ...

  8. asp.net coree文件上传与下载实例

    asp.net core像springboot非常相似,我们从一个springboot文件上传与下载的例子来引到asp.net core的文件上传与下载: 本文asp.net core版本为:6.0 ...

  9. 走进Struts2(六)— 文件上传和下载

    一.文件上传 实现文件上传的方式有很多种,比如Apache的Common-FileUpload,但是实现起来非常的繁琐,而Struts2来实现文件上传则简单的多,默认也是基于Common-FileUp ...

最新文章

  1. Boost Asio总结(5)class tcp
  2. Cocoapods的Podfile常见语法总结
  3. java并发AtomicIntegerFieldUpdater
  4. 中兴天机Axon 10 Pro系列中国发布:售价3199元起
  5. Ubuntu下部署zabbix 开源监控系统
  6. 完了!CPU 一味求快出事儿了!| 原力计划
  7. linux 下的前端编程工具,Prepros Linux版(前端开发工具)
  8. 转载--批量更新数据(性能优化)
  9. Python爬取妹子图
  10. 史上最全进入BIOS方法及U盘重装系统步骤详解
  11. FMS4.5限制连接数
  12. 你在百度区块链养狗了么?
  13. DataGrip使用技巧
  14. 增强无线路由器信号的方法与技巧
  15. python实现马科维茨模型的资本市场线_资产配置理论的基础之马科维茨模型
  16. vue2路由手动创建二级路由路由传参路由守卫打包上线
  17. 【解决方案】STM32L152单片机驱动段码LCD屏,执行HAL_LCD_Init函数失败返回HAL_TIMEOUT,长时间卡在LCD_FLAG_RDY的while循环里面的解决办法
  18. 缺失msvcr120.dll一般性问题如何解决
  19. 两数之和:找出给定数组中和是给定目标整数的两个整数,输出找到的两个整数下标
  20. 外包3年,吃透这三份Java程序员必刷的算法宝典后,已从13K涨到25K

热门文章

  1. Python中str.format()字典及list传入详解
  2. 利用SAP 0day,四分钟内黑掉华尔街
  3. oracle 10g 安装到登录
  4. JS隐形数据类型转换注意事项
  5. 【液晶模块系列基础视频】3.2fatfs接口函数的使用2
  6. android内核中Kconfig及如何加自己的驱动
  7. 和php结合实现分页js代码,无JS,完全php面向过程数据分页实现代码
  8. 软件测试面试,秋招你准备好了吗?(内附答案)
  9. python android自动化测试框架_appium+python搭建自动化测试框架_Tools安装(一)
  10. 黑马博客——详细步骤(九)项目功能的实现之mongoDB数据库添加账号