5-8 SpringBoot拦截器的使用
配置拦截器,打印接口耗时
新建:
@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拦截器的使用相关推荐
- springboot + 拦截器 + 注解 实现自定义权限验证
springboot + 拦截器 + 注解 实现自定义权限验证 最近用到一种前端模板技术:jtwig,在权限控制上没有用springSecurity.因此用拦截器和注解结合实现了权限控制. 1.1 定 ...
- 【SpringBoot】SpringBoot拦截器实战和 Servlet3.0自定义Filter、Listener
=================6.SpringBoot拦截器实战和 Servlet3.0自定义Filter.Listener ============ 1.深入SpringBoot2.x过滤器Fi ...
- SpringBoot拦截器与过滤器
一.拦截器与过滤器 在讲Spring boot之前,我们先了解一下过滤器和拦截器.这两者在功能方面很类似,但是在具体技术实现方面,差距还是比较大的.在分析两者的区别之前,我们先理解一下AOP的概念,A ...
- springboot拦截器与过滤器详解
前言 不管是传统的ssm项目,还是springboot项目,拦截器和过滤器在项目开发中都离不开,比如说对于ssm框架类的项目来说,许多登录逻辑的前置校验,黑白名单的检查,以及部分请求的数据分析等依然需 ...
- SpringBoot拦截器配置
SpringBoot拦截器配置 自定义拦截器: com.example.mybatis2018.interceptor.MyInterCeptor package com.example.mybati ...
- Springboot 拦截器链 - 加载拦截器
Springboot 拦截器链 - 加载拦截器 1.创建拦截器 // 创建拦截器需要实现 HandlerInterceptor 接口 @Slf4j public class HandleInterce ...
- Springboot拦截器实现IP黑名单
Springboot拦截器实现IP黑名单 一·业务场景和需要实现的功能 以redis作为IP存储地址实现.业务场景:针对秒杀活动或者常规电商业务场景等,防止恶意脚本不停的刷接口.实现功能:写一个拦截器 ...
- SpringBoot 拦截器和AOP自定义注解进行数据拦截实例
声明:本文纯属个人随手笔记,如果对您有参考价值我十分开心,如果有存在错误,或者有更好的解决办法也麻烦您留言告诉我,大家共同成长,切勿恶言相. 欢迎加入资源共享QQ群:275343679,一起发现知识. ...
- SpringBoot拦截器
SpringBoot拦截器 新建一个拦截器CommonInterceptor,继承HandlerInterceptorAdapter.给大家说一下,在继承HandlerInterceptorAdapt ...
- springboot拦截器无法注入redisTemplate
在工作中我们经常需要做登录拦截验证或者其他拦截认证功能,基于springboot项目下我们很容易想到结合redis做的分布式拦截,把用户登录或者需要验证的信息放到redis里面.但是在写拦截器的时候发 ...
最新文章
- 通信网络基础期末复习-第三章-网络的时延分析
- Android 自动检测更新,自动下载apk更新版本
- python创建数据库表_Python 操作数据库(1)SQL基础
- 【使用注意】多线程导致解码混乱的情况
- mysql in 查询优化_mysql in 集合查询优化问题。
- 计算机组成原理pd指令是什么,计算机组成原理期中考试(DOC).doc
- csv处理数据后存入数据库
- 设计一个简单的家乡网站
- LiteOS学习笔记-8LiteOS SDK oc流程之LwM2M
- gtx780有html接口吗,史上最强显卡供电GTX780入手,纪念给了我人生一堂课的舅妈...
- com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Table doesn't exist
- SQL练习题:变更性别
- MySQL 5.7 深度解析: JSON数据类型使用
- Visual Studio日文乱码解决方法
- 143578-65-8,CYCLO(-D-PHE-HIS-TRP-ALA-VAL-GLY-HIS-LEU-LEU)
- 百度小程序怎么添加到主屏幕将百度小程序放到手机桌面?
- 网络空间安全导论|基本思维导图持续更新中~
- Arduino 8x8点阵怦然心动
- 大学生面试技巧与注意事项|实战经验
- mybatis源码(一)
热门文章
- 雪球 feed流爬虫
- 【接口时序】5、QSPI Flash的原理与QSPI时序的Verilog实现(转载)https://www.cnblogs.com/liujinggang/p/9651170.html
- 渗透测试:密码破解小结
- 《C语言程序设计》江宝钏主编-习题3-7-交换变量
- gitbook 插件 文章 TOC 目录
- 从玉农业谋定国家龙头企业-林裕豪:对话农民丰收节交易会
- 如何做一个基于微信校园跑腿小程序系统毕业设计毕设作品
- 支持随时随地一键开会,华为云会议场景适用性更强!
- app pour android,Pokédex pour Android (FR)
- Python 数据分析微专业课程--项目实战11 中国城市资本流动问题探索