Spring中添加打印请求头的拦截器

这篇具有很好参考价值的文章主要介绍了Spring中添加打印请求头的拦截器。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

问题

因为最近这个项目没有调用链监控系统的支持,但是,本地PostMan调试的时候又需要请求头才能正常调试。

思路

喊ChatGPT实现一下能够打印所有请求头的拦截器,然后,集成到已有代码即可。

解决

RequestHeaderInterceptor.java

package cn.xxxx.interceptor;

import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
import org.springframework.web.servlet.HandlerInterceptor;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.Enumeration;

/**
 * 打印接受到的所有请求头
 * @author zhangyalin
 */
@Slf4j
@Component
public class RequestHeaderInterceptor implements HandlerInterceptor {
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        // 获取所有请求头的名称
        Enumeration<String> headerNames = request.getHeaderNames();
        while (headerNames.hasMoreElements()) {
            String headerName = headerNames.nextElement();
            // 获取请求头的值并打印
            String headerValue = request.getHeader(headerName);
            log.debug(headerName + ": " + headerValue);
        }
        return HandlerInterceptor.super.preHandle(request, response, handler);
    }
}

WebMvcConfiguration.java

在Springboot的配置类中集成上面的拦截器即可。

package cn.xxxx.config;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.cloud.context.config.annotation.RefreshScope;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.Ordered;
import org.springframework.web.servlet.config.annotation.CorsRegistry;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

import javax.annotation.Resource;

/**
 * 基础配置
 * @author zhangyalin
 */
@RefreshScope
@ComponentScan({"cn.xxxx", "cn.xxx.sxa"})
@Configuration
public class WebMvcConfiguration implements WebMvcConfigurer {

    @Resource
    private RequestHeaderInterceptor requestHeaderInterceptor;

    @Value("${interceptors.requestHeaderInterceptor:false}")
    private boolean requestHeaderInterceptorEnable;

    /**
     * 注入拦截器
     *
     */
    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        if (requestHeaderInterceptorEnable){
            // 打印所有请求头
            registry.addInterceptor(requestHeaderInterceptor).order(Ordered.HIGHEST_PRECEDENCE).addPathPatterns("/**");
        }
    }
}

配置中心

logging:
  level:
    cn.xxxx.interceptor: DEBUG
interceptors:
  requestHeaderInterceptor: true

总结

这就是简单使用HandlerInterceptor,实现自己的请求头打印拦截器。我这里配置中心,动态性还是不很完善。interceptors.requestHeaderInterceptor配置修改后,得重启服务才能生效。文章来源地址https://www.toymoban.com/news/detail-701834.html

到了这里,关于Spring中添加打印请求头的拦截器的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Spring/SpringBoot 拦截器

    Spring/SpringBoot 拦截器 拦截器的作用: 拦截器,可以进行请求过滤、权限管理、打印日志、数据校验等。 拦截器,可以在请求前、请求后进行处理。 代码示例: 拦截器 MyInterceptor: Spring的拦截器,需要实现 HandlerInterceptor 接口。 配置拦截器: 配置拦截器,需要实现 WebMvcConf

    2024年02月19日
    浏览(46)
  • Spring MVC 拦截器

    如何实现session共享问题: 1、session都在内存里面存储的,只要有session对象我都分发出去,让其他应用都可以拿到(同步) 缺点: 只要有session对象都要广播出去,而且用户应用比较多了就会导致服务压力大, 2、使用token,登录完之后给你一个token,然后加密完之后发给服务

    2024年02月15日
    浏览(40)
  • Spring MVC:拦截器

    在 JavaWeb 中, 过滤器 是 Servlet 技术中最实用的技术,能够管理 Web 服务器的所有 Web 资源,实现信息拦截、权限访问控制、过滤敏感词汇、压缩响应信息等功能。它主要用于对用户请求进行预处理,也可以对 HttpServletResponse 进行后处理。 而 Spring MVC 的 拦截器 类似于过滤器,

    2024年02月08日
    浏览(37)
  • Spring MVC拦截器

    拦截器(Interceptor)是 Spring MVC 提供的一种强大的功能组件。它可以对用户请求进行拦截,并在请求进入控制器(Controller)之前、控制器处理完请求后、甚至是渲染视图后,执行一些指定的操作。 在 Spring MVC 中,拦截器的作用与 Servlet 中的过滤器类似,它主要用于拦截用户请

    2024年02月09日
    浏览(42)
  • 【Spring Boot系列】- Spring Boot拦截器

    拦截器(Interceptor)是在面向切面编程中应用的,就是在service或者一个方法前调用一个方法,或者在方法后调用一个方法。是基于JAVA的反射机制。可以根据 URL 对请求进行拦截,主要应用于登陆校验、权限验证、乱码解决、性能监控和异常处理等功能。 在 Spring Boot 项目中,

    2024年02月13日
    浏览(40)
  • Spring 统一功能处理(拦截器)

    SpringBoot统一功能处理。也就是AOP的具体实现。 最原始的用户登录验证方法,我们通过封装了一个方法来判断用户是否登录,但如果实现的功能多了,那么每一个需要登录的功能都要在对应的接口中来调用这个函数来判读是否登录。 上面的代码虽然已经封装成了方法,但是如

    2024年02月03日
    浏览(54)
  • spring boot 拦截器例子

    在Spring Boot中,拦截器是通过实现`HandlerInterceptor`接口来实现的。它允许你在请求到达控制器方法之前和之后执行自定义的逻辑。下面我将为你提供一个简单的Spring Boot拦截器的例子。 假设我们有一个简单的控制器类`UserController`,其中有两个请求处理方法:`getUser`和`saveUser`,

    2024年02月15日
    浏览(40)
  • Spring Boot 配置拦截器

    通过拦截器,我们可以针对特定 URI 做拦截,做相关业务处理,比如检查用户是否登录,打印每个请求的处理耗时等。 新建登录验证类  LoginValidationInterceptor.java : 定义一个拦截器类后,您需要实现  HandlerInterceptor  接口,其有三个方法可以重写: preHandle : 在调用 Controller 方

    2024年02月08日
    浏览(57)
  • Spring拦截器实现鉴权

    拦截器(Interceptor)类似于Servlet中的过滤器,主要用于拦截用户请求并做出相应的处理,例如拦截器可以进行权限验证、记录请求信息的日志、判断用户是否登录等。拦截器允许自定义预处理(Pre-Processing),在其中可以选择禁止对应Handler 的执行;也允许自定义后处理(Post-Pre

    2024年02月11日
    浏览(37)
  • Spring MVC学习之——拦截器

    Spring MVC中的拦截器(Interceptor)类似于Servlet中的过滤器(Filter),它主要用于拦截用户请求并作相应的处理。例如通过拦截器可以进行权限验证、判断用户是否登录等。 ​ 拦截器依赖于web框架,在实现上基于Java的反射机制,属于面向切面编程(AOP)的一种运用。 Spring的拦

    2024年01月20日
    浏览(48)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包