Springboot 应用中过滤器修改response的header和body内容的问题

本文介绍了在Springboot应用中如何使用过滤器Filter来修改response的header和body内容。通过@WebFilter注解或@Configuration配置类添加过滤器,并探讨了在chain.doFilter前后修改header的不同。对于修改body,自定义了HttpServletResponseWrapper子类BodyCachingHttpServletResponseWrapper,通过过滤器捕获原始body,然后根据业务逻辑进行修改并重新写入输出流。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

springboot添加过滤器,继承Filter接口,实现doFilter方法

方法一,实现类增加注解@WebFilter,注解参数filterName表示过滤器名称,urlPatterns表示要过滤的url路径,在启动类增加注解@ServletComponentScan,表示能扫描到该类。

当有多个过滤器时,通过注解@Order,注解参数大小表示过滤器执行的县厚顺序,越小越先执行

@WebFilter(filterName = "responseFilter",urlPatterns = "/*")
public class ResponseFilter implements Filter

方法二,创建新配置类,添加 @Configuration 注解,将自定义Filter加入过滤链。

@Configuration
public class DefinedFilterConfig {
    
    @Bean
    public FilterRegistrationBean responseFilter() {
        FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean();
        ResponseFilter responseFilter = new ResponseFilter();
        
        filterRegistrationBean.setFilter(responseFilter);
        filterRegistrationBean.addUrlPatterns("/*");//配置过滤规则
        filterRegistrationBean.setName("responseFilter");//设置过滤器名称
        filterRegistrationBean.setOrder(1);//执行次序
        return filterRegistrationBean;
    }
}

springboot在response中添加或者修改header,分两种情况

情况1,在chain.doFilter(servletRequest, servletResponse)代码之前

servletResponse.addHeader("XXX", "xxxx");

或者

servletResponse.setHeader("XXX", "xxxx");<

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

彼岸花@开

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值