拦截器

  • 拦截器介绍
  • 拦截器开发
    • 开发拦截器 MyInterceptor
    • 开发控制器 HelloController
    • 配置拦截器 InterceptorConfig
  • 运行

SpringBoot 知识点目录: SpringBoot 核心知识点整理!

拦截器介绍

拦截器的作用:通过拦截执行中通用的代码逻辑,来减少控制器中的代码冗余

拦截器的特点:

  • 只能拦截控制器的相关请求,不能拦截静态资源和页面的相关请求(css、img)
  • 请求发送经过拦截器响应回来同样经过拦截器
  • 拦截器中断用户的请求
  • 拦截器可以针对性拦截某些控制器请求

拦截器开发

开发一个自己的拦截器类,要求实现 HandlerInterceptor

  • preHandlercontroller 执行之前,进行拦截,通过返回值判断是否放行。
    返回值 true 表示放行,然后去执行 controller 中的代码。
    返回值 false 表示拦截,不再继续执行后续代码。
  • postHandler 请求过程中处理 controller 执行之后的操作。
  • afterCompletion 最终处理。

开发拦截器 MyInterceptor

public class MyInterceptor implements HandlerInterceptor {@Overridepublic boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {System.out.println("---------1----------");return true; // true代表放行, false表示拦截住}@Overridepublic void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {System.out.println("---------3----------");}@Overridepublic void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {System.out.println("---------4----------");}
}

开发控制器 HelloController

@RestController
@RequestMapping("/hello")
public class HelloController {@RequestMapping("/hello")public String hello() {System.out.println("---------2----------");return "hello";}@RequestMapping("world")public String world() {System.out.println("-------world--------");return "world";}
}

配置拦截器 InterceptorConfig

@Configuration
public class InterceptorConfig extends WebMvcConfigurationSupport {@Overridepublic void addInterceptors(InterceptorRegistry registry) {registry.addInterceptor(new MyInterceptor()) // 添加拦截器.addPathPatterns("/hello/**") // 添加l拦截的请求路径.excludePathPatterns("/hello/world"); // 添加排除哪些请求路径不经过拦截器}
}

运行

首先在 preHandle 中进行拦截,上述代码为 true 表示放行,则开始执行 HelloController 中的代码,执行完控制器之后再去执行 postHandle 中的代码,整个过程结束以后再执行 afterCompletion 中的代码。

---------1----------
---------2----------
---------3----------
---------4----------

SpringBoot2.x 中配置拦截器相关推荐

  1. SpringBoot中配置拦截器时,跨域失效

    SpringBoot中配置拦截器时,跨域失效 前后段分离的项目,配置了跨域后,访问正常,但是配置了拦截器以后,有的访问正常,有的出现跨域问题,发现出现跨域问题的都是拦截器里面没有放行的请求. @Con ...

  2. Springmvc中的拦截器interceptor及与过滤器filter的区别

    一.Springmvc中的拦截器概述及与过滤器filter的区别 1).Springmvc中的拦截器interceptor用于对控制器controller进行预处理和后处理的技术; 2).可以定义拦截 ...

  3. Spring中的拦截器的作用

    Spring中的拦截器的作用 SpringMVC的处理器拦截器类似于Servlet开发中的过滤器Filter,用于对处理器进行预处理和后处理. 用户可以自己定义一些拦截器来实现特定的功能. 谈到拦截器 ...

  4. springboot2.0版本后配置拦截器会导致静态资源被拦截

    转载:https://blog.csdn.net/wangfuxu14/article/details/80670648 springboot2.0版本后配置拦截器会导致静态资源被拦截 解决办法: 分 ...

  5. springboot配置拦截器,在拦截器中获取@RequestBody注解参数和post请求参数以及get请求参数

    1.配置拦截器 package com.jy.gxw.config.interceptor;import org.springframework.beans.factory.annotation.Au ...

  6. SpringMVC中的拦截器

    SpringMVC中的拦截器 拦截器的作用 Spring MVC 的处理器拦截器类似于 Servlet 开发中的过滤器 Filter,用于对处理器进行预处理和后处理. 用户可以自己定义一些拦截器来实现 ...

  7. Struts2中的拦截器与过滤器学习

    拦截器是在面向切面编程的就是在你的service或者一个方法,前调用一个方法,或者在方法后调用一个方法 ,比如动态代理就是拦截器的简单实现,过滤器是在java web中,你传入的request,res ...

  8. vue面向切面_vue:在路由跳转中使用拦截器

    1:首先在路由对象中的某一个具体的路由对象加这样一个属性 meta: {  requireAuth:true  } 2:然后在main.js中添加这段代码 router.beforeEach((to, ...

  9. 【springboot中使用拦截器】

    1.拦截器原理 1.定义拦截器: 2.配置拦截器 3.解决静态资源被拦截 2.拦截器使用实例 2.1判断用户有没有登录 2.2取消拦截操作 1.拦截器原理 拦截器的原理很简单,是AOP 的一种实现,专 ...

最新文章

  1. 网络安装Centos x64 6.10
  2. luogu3810 【模板】三维偏序(陌上花开)
  3. SAP Cloud SDK for JavaScript 概述
  4. html div初始隐藏点击可见_3种CSS3移动手机隐藏菜单UI界面代码解析/附源码下载...
  5. php抓取动态数据,php+ajax实现无刷新动态加载数据技术
  6. 无法将类型int隐式转换为string_Scala implicit 隐式转换安全驾驶指南
  7. 将列表打印为表格数据
  8. 有必要买吗_婴儿床有必要买吗 婴儿床有用吗
  9. Java排序算法——猴子排序(Bogo Sort)
  10. 自媒体采集平台免费,免费的自媒体采集平台
  11. 通过nginx实现线上页面访问本地接口
  12. 天水师范计算机与科学怎么样,甘肃大学分析:陇东学院和天水师范哪所师范类本科好?...
  13. IP-guard项目实施前情况调查表
  14. VMware 虚拟机安装Linux(Ubuntu)系统教程
  15. 解决Chrome和Chrome内核edge浏览器在启用硬件加速后颜色异常的问题
  16. 分布式事务之BASE理论
  17. 江西省九江市瑞昌市高考成绩查询2021,2021九江重点高中学校排名榜
  18. Codeforces Round #262 (Div. 2)-A,B,C,D
  19. 蓝桥杯历届试题-数字游戏
  20. html怎么把页面和图片居中,css怎么让图片居中?

热门文章

  1. 分享一个四两拨千斤的真实故事
  2. RISC-V架构能否有效挑战ARM和英特尔?
  3. 修饰类方法(静态方法)
  4. 软件就像大教堂:我们建造它们——然后祈祷
  5. 代码不会骗人,但有时注释会
  6. Usually, these regular meetings do not have
  7. Qt4_读取和写入二进制数据
  8. 【吴恩达课后编程作业pytorch实现】Keras入门与残差网络的搭建【1】
  9. 使用selenium webdriver进行元素定位
  10. 造成sql注入的功能点_创建一个SQL注入保护功能