侧边栏壁纸
博主头像
搭建网站的历程博主等级

生命不息,折腾不止

  • 累计撰写 36 篇文章
  • 累计创建 4 个标签
  • 累计收到 0 条评论

目 录CONTENT

文章目录

SpringBoot创建过滤器

甘超良
2023-12-16 / 0 评论 / 0 点赞 / 19 阅读 / 3417 字

有两种创建SpringBoot 过滤器的方式

一 通过FilterRegistrationBean注册

二 通过@WebFilter注解

1 通过FilterRegistrationBean注册Filter

1.1 创建过滤器RequestLogFilter.java

package com.gcl.filter;

import lombok.extern.slf4j.Slf4j;
import org.springframework.web.filter.OncePerRequestFilter;

import javax.servlet.FilterChain;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

@Slf4j
public class RequestLogFilter extends OncePerRequestFilter {
    @Override
    protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) throws ServletException, IOException {
        log.info("RequestLogFilter");
    }
}

1.2 创建配置文件注册FilterConf.java

package com.gcl.conf;

import com.gcl.filter.RequestLogFilter;
import org.springframework.boot.web.servlet.FilterRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class FilterConf {

    @Bean
    public FilterRegistrationBean<RequestLogFilter> requestLogFilter() {

        FilterRegistrationBean<RequestLogFilter> bean = new FilterRegistrationBean<>();
        bean.setFilter(new RequestLogFilter());
        bean.setName("request-log-filter");
        bean.addUrlPatterns("/*");

        return bean;
    }
}

2 使用@Webfilter注解创建

2.1 创建RequestLogFilter2.java

package com.gcl.filter;

import lombok.extern.slf4j.Slf4j;
import org.springframework.core.annotation.Order;

import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import java.io.IOException;

@Slf4j
@Order(1)
@WebFilter(urlPatterns = "/*", filterName = "request-log-filter-2")
public class RequestLog2Filter implements Filter {

    @Override
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
        log.info("RequestLog2Filter by WebFilter");
    }
}

2.2 启动类加上 @ServletComponentScan注解

0

评论区