HandlerInterceptor拦截器计算请求时间并日志记录

1.自定义拦截器

SpringMVC的拦截器执行流程

  • 自定义拦截器有三个方法preHandle postHandle afterCompletion
  • preHandle相当于Servlet的Filter过滤器
  • preHandle+postHandle相当于@AspectJ的环绕通知Around
  • 一个请求的流程运行到afterComletion时,请求体本身已经执行完毕,一般很少在afterCompletion进行一些处理,不过可以把日志记录单独放在afterCompletion里面
  • 都执行的话,preHandle顺序执行,然后目标方法,postHandler逆序执行,最后再afterCompletion逆序执行


HandlerInterceptor和HandlerInterceptorAdapter区别

  • HandlerInterceptor是接口,必须自己重写三个方法:perHandle、postHandle、afterCompletion
  • HandlerInterceptorAdapter是实现类,直接继承后可以按需重写

HandlerInterceptor接口

三个必须实现的方法

HandlerInterceptorAdapter实现类

  • 这个实现类是对HandlerInterceptor的封装,开发人员可以按需重写。
  • 当然个人觉得大差不差,过滤可以用Filter,环绕可以用@AspectJ,如果需要在目标方法结束之后进行日志记录的话还是得重写afterCompletion
    继承结构

代码示例

@Slf4j
public class MyInterceptor implements HandlerInterceptor {

  @Override
  public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
    long start = System.currentTimeMillis();
    request.setAttribute("startTime", start);
    return true;//直接放行
//    return HandlerInterceptor.super.preHandle(request, response, handler);
  }
  @Override
  public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
    long start = (long) request.getAttribute("startTime");
    long end     = System.currentTimeMillis();
    request.setAttribute("handleTime",end-start);
//    HandlerInterceptor.super.postHandle(request, response, handler, modelAndView);
  }

  @Override
  public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
  log.info(
      String.format("本次请求%s的%s接口耗时%s毫秒",
          request.getRequestURL(),
          request.getMethod(),
          (long)request.getAttribute("handleTime")));
//    HandlerInterceptor.super.afterCompletion(request, response, handler, ex);
  }
}

2.WebMvcConfigurer接口配置MVC拦截器

在springboot之前需要写xml来配置拦截器,现在可以直接通过WebMvcConfigurer接口来配置,当然有其他的配置接口,但不推荐,WebMvcConfigurerAdapter、WebMvcConfigurationSupport

详情操作参考:

为什么用WebMvcConfigurer

→MVC配置api

//@Component效果跟@Configuration一样
@Configuration
public class MyWebMvcConfigurer implements WebMvcConfigurer {

  @Override
  public void addInterceptors(InterceptorRegistry registry) {
    registry.addInterceptor(new MyInterceptor ()).addPathPatterns("/login/web")
        .excludePathPatterns("/login/no");
  }
}

拦截的接口如下:

  @PostMapping("/web")
  public DtoRes webTest(HttpServletRequest request  ,  HttpServletResponse response ,@RequestBody DtoReq dtoReq) throws IOException {

    System.out.println(dtoReq);
		 return null;
  }

控制台输出:

ZJH'blog
关注 关注
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
使用拦截器记录每个请求的 url 和执行所需的时间
临窗,听雨声
06-12 2740
1.实现 HandlerInterceptor 接口 因为要记录执行时间,所以这里使用 ThreadLocal import org.springframework.web.servlet.HandlerInterceptor; import org.springframework.web.servlet.ModelAndView; import javax.servlet.http....
使用拦截器(HandlerInterceptor)+自定义注解记录系统操作日志
上官睿阳的博客
12-29 4071
使用拦截器(HandlerInterceptor)+自定义注解,实现对系统管理员操作进行记录。 项目使用SpringMVC+MyBatis开发,Spring版本为:4.1.9.RELEASE。 关于拦截器没有太详细的介绍,本文仅对使用拦截器做了一定的说明。
拦截器记录日志
08-13
拦截器记录日志
Spring之拦截器HandlerInterceptor
最新发布
ToBeMaybe_的博客
09-06 1437
在web开发中,拦截器是经常用到的功能,用于拦截请求进行预处理和后处理,一般用于以下场景: 1. 日志记录,可以记录请求信息的日志,以便进行信息监控、信息统计、计算PV(Page View)等等。 2. 权限检查:如登陆检测,进入处理器检测是否登陆,如果没有直接返回到登陆页面。 3. 性能监控:有时候系统在某段时间莫名其妙的慢,可以通过拦截器在进入处理器之前记录开始时间,在处理完后记录结束时间,从而得到该请求的处理时间(如果有反向代理,如apache可以自动记录); 4. 通用行为:读取cooki
spring mvc inteceptor 拦截器实现计算controller 的执行时间 异常处理
weixin_33982670的博客
11-03 170
2019独角兽企业重金招聘Python工程师标准>>> ...
HandlerInterceptor获取controller的请求参数+AOP日志
の博客
02-01 737
把CustomerDispatcherServlet注册为默认的DispatcherServlet
springboot拦截器记录接口日志信息
qq_37342720的博客
04-22 3045
继上一篇文章springboot 切点@Pointcut 过滤某个目录的类我又使用拦截器记录日志信息。 spring拦截器 一般有两种 继承HandlerInterceptorAdapter 实现HandlerInterceptor 一般用作日志记录和登录校验使用。 主要有三种方法 preHandle:拦截于请求刚进入时,进行判断,需要boolean返回值,如果返回true将继续执行,如果返回false,将不进行执行。一般用于登录校验。 postHandle:拦截于方法成功返回后,视图渲..
使用Spring MVC拦截器实现日志记录的方法
08-30
首先,要实现一个日志记录拦截器,需要定义一个类实现`org.springframework.web.servlet.HandlerInterceptor`接口。在这个接口中,定义了三个主要的方法,分别是`preHandle`、`postHandle`和`afterCompletion`。 ...
22. Spring Boot 拦截器HandlerInterceptor【从零开始学Spring Boot】
08-13
在Spring Boot框架中,拦截器HandlerInterceptor)是一种强大的机制,用于在请求处理前后执行自定义逻辑。在本文中,我们将深入探讨Spring Boot中的拦截器,了解其工作原理、如何实现以及实际应用。 首先,Spring...
Spring拦截器HandlerInterceptor接口代码解析
08-28
Spring拦截器HandlerInterceptor接口代码解析是Spring框架中的一种重要机制,它允许开发者在请求处理过程中执行自定义逻辑,以达到验证、日志记录、性能监控、安全检查等目的。本文将详细介绍Spring拦截器...
HandlerInterceptor拦截器如何重新设置请求体报文
09-06
HandlerInterceptor拦截器无法直接重新设置请求体报文。HandlerInterceptor接口主要用于在请求处理前后进行拦截和操作,可以在请求处理前对请求进行预处理,也可以在请求处理后对响应进行处理。但是,请求体报文是在...
Spring Boot Aspect 切面 AOP 拦截器 Interceptor 监控control请求耗时
03-13
常用拦截 拦截器HandlerInterceptor 拦截器MethodInterceptor 添加依赖 创建启动类 创建拦截器类 创建控制器 监控control请求耗时,提高性能
handlerinterceptor拦截器
04-06
HandlerInterceptor拦截器是一个用于拦截处理程序请求、响应以及处理程序方法执行的Spring MVC框架组件。...可以使用HandlerInterceptor拦截器来添加身份验证、日志记录、跨域请求处理、异常处理等等功能。
SringMVC拦截器实现拦截日记
weixin_41305096的博客
07-09 336
spring记录日志有两种,一种是通过AOP,另一种是通过拦截器interceptor,这里选择的是拦截器interceptor: 一、Interceptor实现类SpringMVC 中的Interceptor 拦截请求是通过HandlerInterceptor 来实现的。在SpringMVC 中定义一个Interceptor 非常简单,主要有两种方式:第一种方式是要定义的Interceptor类...
spring mvc 使用拦截器interceptor和自定义Log类实现持久层记录日志
I__Rookie的博客
03-17 6311
首先spring记录日志我所知道的有两种,一种是通过AOP,另一种是通过拦截器interceptor,我这次选择的是拦截器interceptor: 1.spring-mvc.xml文件中配置拦截器, <!-- 装配拦截器 --> <mvc:interceptors> <mvc:interceptor> <mvc:mapping path="/**/*
springboot使用拦截器记录请求日志
qq_42298793的博客
07-09 1819
1.创建数据库 2.引入相关依赖 <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apac
详解HandlerInterceptor接口(记录
weixin_55829616的博客
05-10 2710
实现HandlerInterceptor接口可以帮助我们拦截HTTP请求,并在请求处理之前、之后、以及完成之后执行自定义的逻辑。
【RuoYi-Vue-Plus】学习笔记 14 - 全局接口调用时间统计拦截器 PlusWebInvokeTimeInterceptor
MichelleChung的星球
02-11 3851
本文主要分析了一下接口调用时间统计拦截器 PlusWebInvokeTimeInterceptor
springMVC:HandlerInterceptor拦截器添加系统日志(权限校验)代码收藏
03-18 2141
public class RequestLogIntercepter implements HandlerInterceptor { private Logger log = LoggerFactory.getLogger(RequestLogIntercepter.class); @Autowired private ISysMenuDao sysMenuDao; ...
写文章

热门文章

  • Java数组详解(超全) 26890
  • hasNext、hasNextLine、next、nextLine保姆级详解 24887
  • Stream按对象某属性去重的方案 14321
  • SpringBoot使用Filter 12863
  • Java十万字笔记(带索引) 12514

分类专栏

  • 笔记

最新评论

  • Restful风格真的有必要吗?

    -人生何处不青山-: 网上都在说Restful好,最近用了一下,感觉只有简单的增删改查比较适用。业务稍微复杂一点,增删改查就不那么单纯了。我个人还是更喜欢使用Get和Post

  • hasNext、hasNextLine、next、nextLine保姆级详解

    keeponcoding: 有一个问题,就是说关于博主所讲的hasNext与hasNextLine的存储功能,我在另一篇博文中看到的解释是,next与nextline会将读取到的字符串放进堆内存里面,然后光标移动在堆内存中进行读取字符串,我更倾向于这种说法

  • 布隆过滤器黑名单+白名单实现ip黑名单问题

    上吧皮卡丘: 能解释下不在白名单但在黑名单的用户为什么就不可能本来就是黑名单么?有点绕啊。。。

  • 布隆过滤器黑名单+白名单实现ip黑名单问题

    上吧皮卡丘: 你无法判断是否是hash碰撞导致它存在的,可能它本来就存在

  • 面试题:HashMap中entrySet()源码+思想详解

    我独自升級: put时不会走吧,jdk8put方法时没有任何迹象只有newNode

大家在看

  • 论文 Python 实现WOA-CNN-BiGRU-Attention数据分类预测 64
  • 手环押金原路退回系统——足浴店——东方仙盟

最新文章

  • SQL刷题:SQL必知必会
  • MySQL窗口函数
  • 查询:按A分组,满足B时对应的C
2023年1篇
2022年115篇
2021年58篇

目录

目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

玻璃钢生产厂家湖北仿铜玻璃钢雕塑玻璃钢人像雕塑厂党建文化玻璃钢卡通雕塑推荐厂家玻璃钢花盆 龙大西藏拉萨玻璃钢雕塑生产 厂家中山玻璃钢卡通雕塑游乐场道具沈阳步行街玻璃钢雕塑联系方式苏州商场美陈哪家好方城玻璃钢雕塑定制兴宁玻璃钢人物雕塑玻璃钢花盆厂家报价安徽省玻璃钢雕塑找哪家广东中庭商场美陈销售公司景观玻璃钢彩绘雕塑广场标识玻璃钢仿铜雕塑制作台州玻璃钢雕塑定做咨询客服天津卡通玻璃钢雕塑定制东阳卡通玻璃钢雕塑订做永康石柱玻璃钢雕塑高淳商场美陈道具保定仿铜玻璃钢雕塑瑞丽市玻璃钢雕塑设计厂家定做古铜玻璃钢雕塑山西欧式玻璃钢雕塑濮阳公园校园玻璃钢景观雕塑玻璃钢雕塑哪里有培训星球大战玻璃钢雕塑惠州玻璃钢透光雕塑工艺海口玻璃钢雕塑厂家哪家好南阳中秋节商场美陈香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声单亲妈妈陷入热恋 14岁儿子报警汪小菲曝离婚始末遭遇山火的松茸之乡雅江山火三名扑火人员牺牲系谣言何赛飞追着代拍打萧美琴窜访捷克 外交部回应卫健委通报少年有偿捐血浆16次猝死手机成瘾是影响睡眠质量重要因素高校汽车撞人致3死16伤 司机系学生315晚会后胖东来又人满为患了小米汽车超级工厂正式揭幕中国拥有亿元资产的家庭达13.3万户周杰伦一审败诉网易男孩8年未见母亲被告知被遗忘许家印被限制高消费饲养员用铁锨驱打大熊猫被辞退男子被猫抓伤后确诊“猫抓病”特朗普无法缴纳4.54亿美元罚金倪萍分享减重40斤方法联合利华开始重组张家界的山上“长”满了韩国人?张立群任西安交通大学校长杨倩无缘巴黎奥运“重生之我在北大当嫡校长”黑马情侣提车了专访95后高颜值猪保姆考生莫言也上北大硕士复试名单了网友洛杉矶偶遇贾玲专家建议不必谈骨泥色变沉迷短剧的人就像掉进了杀猪盘奥巴马现身唐宁街 黑色着装引猜测七年后宇文玥被薅头发捞上岸事业单位女子向同事水杯投不明物质凯特王妃现身!外出购物视频曝光河南驻马店通报西平中学跳楼事件王树国卸任西安交大校长 师生送别恒大被罚41.75亿到底怎么缴男子被流浪猫绊倒 投喂者赔24万房客欠租失踪 房东直发愁西双版纳热带植物园回应蜉蝣大爆发钱人豪晒法院裁定实锤抄袭外国人感慨凌晨的中国很安全胖东来员工每周单休无小长假白宫:哈马斯三号人物被杀测试车高速逃费 小米:已补缴老人退休金被冒领16年 金额超20万

玻璃钢生产厂家 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化