Springboot整合Servlet Filter和Interceptor

本文详细介绍如何在Spring框架中整合自定义的Filter和Interceptor,通过创建并注册Filter与Interceptor,实现对HTTP请求的预处理和后处理,特别关注于API接口的拦截与鉴权。

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

一、整合Filter

1、写一个自己的Filter

@Component
public class MyFilter implements Filter {
    @Override
    public void init(FilterConfig filterConfig) throws ServletException {
        System.out.println("initFilter");
    }

    @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
        System.out.println("doFilter...");
        filterChain.doFilter(servletRequest, servletResponse);
    }

    @Override
    public void destroy() {
        System.out.println("destroy");
    }
}

2、写一个Config类

@Configuration
public class WebConfig {

    @Autowired
    private MyFilter myFilter;

    public FilterRegistrationBean initFilter() {
        FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean();
        filterRegistrationBean.setFilter(myFilter);
        filterRegistrationBean.setName("MyFilter");
        filterRegistrationBean.addUrlPatterns("/*");
        return filterRegistrationBean;
    }
}

二、整合Interceptor

1、写一个自己的Interceptor,当然这里preHandle等方法现在有默认实现,可以按需覆盖

@Component
public class MyInterceptor implements HandlerInterceptor {

    @Autowired
    private EverestConfig everestConfig;

    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        return null != everestConfig.getImageServer();
    }

    @Override
    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {

    }

    @Override
    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {

    }
}

2、写一个config类

@Configuration
public class WebMvcConfig implements WebMvcConfigurer {

    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(new AuthInterceptor()).addPathPatterns("/api/**").excludePathPatterns("/api/index/auth");
        WebMvcConfigurer.super.addInterceptors(registry);
    }
}

这里我们假设对所有的api接口做拦截,并放行鉴权的接口。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值