spring boot 过滤请求并发送到controller

本文介绍了如何在Spring Boot中创建一个Filter来过滤请求,并将其注册到应用程序,以便在没有传统配置文件的情况下处理过滤逻辑。

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

spring boot 没有了配置文件,可以写一个Filter 来完成过滤。


1.写Filter:


public class CustomFilter implements Filter {

    /**
     * 封装,不需要过滤的list列表
     */
    protected static List<Pattern> patterns = new ArrayList<Pattern>();

    @Override
    public void init(FilterConfig filterConfig) throws ServletException {
    }

    @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
        HttpServletRequest httpRequest = (HttpServletRequest)servletRequest;
        HttpServletResponse httpResponse = (HttpServletResponse)servletResponse;
        String url = httpRequest.getRequestURI().substring(httpRequest.getContextPath().length()); //请求的url
        filterChain.doFilter(httpRequest, httpResponse); // 发到controller方法时候,参数居然是有的。

    }

    /**
     * 是否需要过滤
     * @param url
     * @return
     */
    private boolean isInclude(String url) {
        for (Pattern pattern : patterns) {
            Matcher matcher = pattern.matcher(url);
            if (matcher.matches()) {
                return true;
            }
        }
        return false;
    }
    @Override
    public void destroy() {

    }

}


2. 注册过滤器: 在application.java下面 注册过滤器


@SpringBootApplication
public class SieracApiApplication extends SpringBootServletInitializer {

    public static void main(String[] args) {
        SpringApplication.run(SieracApiApplication.class, args);
    }

    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
        return builder.sources(SieracApiApplication.class);
    }


    /**
     * 注册过滤器
     * @return
     */
    @Bean
    public FilterRegistrationBean filterRegistrationBean() {

        FilterRegistrationBean registrationBean = new FilterRegistrationBean();
        registrationBean.setFilter(new CustomFilter());
        List<String> urlPatterns = new ArrayList<String>();

        urlPatterns.add("/api/dealer/out/list"); //这个请求会走filter。 比如是/api/product/out/list就不会走filter
        urlPatterns.add("/api/dealer/out/scanCheck");
        urlPatterns.add("/api/dealer/out/detail");
        urlPatterns.add("/api/dealer/out/scanStatus");


        registrationBean.setUrlPatterns(urlPatterns);
        return registrationBean;

    }
}


以上就能过滤你的url请求,并且发送到控制层。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值