配置拦截器,打印接口耗时

新建:

@Componentpublic class LogInterceptor implements HandlerInterceptor {private static final Logger LOG = LoggerFactory.getLogger(LogInterceptor.class);@Overridepublic boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {// 打印请求信息LOG.info("------------- LogInterceptor 开始 -------------");LOG.info("请求地址: {} {}", request.getRequestURL().toString(), request.getMethod());LOG.info("远程地址: {}", request.getRemoteAddr());long startTime = System.currentTimeMillis();request.setAttribute("requestStartTime", startTime);return true;}@Overridepublic void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {long startTime = (Long) request.getAttribute("requestStartTime");LOG.info("------------- LogInterceptor 结束 耗时:{} ms -------------", System.currentTimeMillis() - startTime);}}

拦截器和过滤器有一点区别,它前后是分成两个方法的。

过滤器整个一起,中间用链去调用业务方法,而拦截器是前后分开。

注意:如果增加一个登录校验,当校验出未登录或者登录超时的时候,就return false,后面的业务逻辑就不会再执行了。

拦截器还需要加上一个全局配置:

@Configuration
public class SpringMvcConfig implements WebMvcConfigurer {@ResourceLogInterceptor loginInterceptor;public void addInterceptors(InterceptorRegistry registry) {registry.addInterceptor(loginInterceptor).addPathPatterns("/**").excludePathPatterns("/login");}
}

/** 表示会相应所有的请求。

但是有一些拦截器,比如登录,并不是所有的接口都要做登录校验。

.excluPathPatterns   表示排除请求,不拦截。

测试结果:

可知,过滤器的范围更大,因为它是在容器里面,先进入容器,再进入应用,再进入web应用,再进行业务逻辑。

最后拦截器先结束,过滤器再结束。

5-8 SpringBoot拦截器的使用相关推荐

  1. springboot + 拦截器 + 注解 实现自定义权限验证

    springboot + 拦截器 + 注解 实现自定义权限验证 最近用到一种前端模板技术:jtwig,在权限控制上没有用springSecurity.因此用拦截器和注解结合实现了权限控制. 1.1 定 ...

  2. 【SpringBoot】SpringBoot拦截器实战和 Servlet3.0自定义Filter、Listener

    =================6.SpringBoot拦截器实战和 Servlet3.0自定义Filter.Listener ============ 1.深入SpringBoot2.x过滤器Fi ...

  3. SpringBoot拦截器与过滤器

    一.拦截器与过滤器 在讲Spring boot之前,我们先了解一下过滤器和拦截器.这两者在功能方面很类似,但是在具体技术实现方面,差距还是比较大的.在分析两者的区别之前,我们先理解一下AOP的概念,A ...

  4. springboot拦截器与过滤器详解

    前言 不管是传统的ssm项目,还是springboot项目,拦截器和过滤器在项目开发中都离不开,比如说对于ssm框架类的项目来说,许多登录逻辑的前置校验,黑白名单的检查,以及部分请求的数据分析等依然需 ...

  5. SpringBoot拦截器配置

    SpringBoot拦截器配置 自定义拦截器: com.example.mybatis2018.interceptor.MyInterCeptor package com.example.mybati ...

  6. Springboot 拦截器链 - 加载拦截器

    Springboot 拦截器链 - 加载拦截器 1.创建拦截器 // 创建拦截器需要实现 HandlerInterceptor 接口 @Slf4j public class HandleInterce ...

  7. Springboot拦截器实现IP黑名单

    Springboot拦截器实现IP黑名单 一·业务场景和需要实现的功能 以redis作为IP存储地址实现.业务场景:针对秒杀活动或者常规电商业务场景等,防止恶意脚本不停的刷接口.实现功能:写一个拦截器 ...

  8. SpringBoot 拦截器和AOP自定义注解进行数据拦截实例

    声明:本文纯属个人随手笔记,如果对您有参考价值我十分开心,如果有存在错误,或者有更好的解决办法也麻烦您留言告诉我,大家共同成长,切勿恶言相. 欢迎加入资源共享QQ群:275343679,一起发现知识. ...

  9. SpringBoot拦截器

    SpringBoot拦截器 新建一个拦截器CommonInterceptor,继承HandlerInterceptorAdapter.给大家说一下,在继承HandlerInterceptorAdapt ...

  10. springboot拦截器无法注入redisTemplate

    在工作中我们经常需要做登录拦截验证或者其他拦截认证功能,基于springboot项目下我们很容易想到结合redis做的分布式拦截,把用户登录或者需要验证的信息放到redis里面.但是在写拦截器的时候发 ...

最新文章

  1. 通信网络基础期末复习-第三章-网络的时延分析
  2. Android 自动检测更新,自动下载apk更新版本
  3. python创建数据库表_Python 操作数据库(1)SQL基础
  4. 【使用注意】多线程导致解码混乱的情况
  5. mysql in 查询优化_mysql in 集合查询优化问题。
  6. 计算机组成原理pd指令是什么,计算机组成原理期中考试(DOC).doc
  7. csv处理数据后存入数据库
  8. 设计一个简单的家乡网站
  9. LiteOS学习笔记-8LiteOS SDK oc流程之LwM2M
  10. gtx780有html接口吗,史上最强显卡供电GTX780入手,纪念给了我人生一堂课的舅妈...
  11. com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Table doesn't exist
  12. SQL练习题:变更性别
  13. MySQL 5.7 深度解析: JSON数据类型使用
  14. Visual Studio日文乱码解决方法
  15. 143578-65-8,CYCLO(-D-PHE-HIS-TRP-ALA-VAL-GLY-HIS-LEU-LEU)
  16. 百度小程序怎么添加到主屏幕将百度小程序放到手机桌面?
  17. 网络空间安全导论|基本思维导图持续更新中~
  18. Arduino 8x8点阵怦然心动
  19. 大学生面试技巧与注意事项|实战经验
  20. mybatis源码(一)

热门文章

  1. 雪球 feed流爬虫
  2. 【接口时序】5、QSPI Flash的原理与QSPI时序的Verilog实现(转载)https://www.cnblogs.com/liujinggang/p/9651170.html
  3. 渗透测试:密码破解小结
  4. 《C语言程序设计》江宝钏主编-习题3-7-交换变量
  5. gitbook 插件 文章 TOC 目录
  6. 从玉农业谋定国家龙头企业-林裕豪:对话农民丰收节交易会
  7. 如何做一个基于微信校园跑腿小程序系统毕业设计毕设作品
  8. 支持随时随地一键开会,华为云会议场景适用性更强!
  9. app pour android,Pokédex pour Android (FR)
  10. Python 数据分析微专业课程--项目实战11 中国城市资本流动问题探索