springboot添加过滤器filter


1、 写一个filter 类

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

public class DemoFilter implements Filter {

    @Override
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
        System.out.println(" 进入了filter " );
        chain.doFilter(request,response);
    }
}

2、注册filter(即让filter生效)

import org.springframework.boot.web.servlet.FilterRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.annotation.Order;

@Configuration
public class FilterConfiger {

    @Bean
    // @Order(1)    //spring boot会按照order值的大小,越小越先执行。(选用)
    public FilterRegistrationBean configFilter(){
        FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean();
        filterRegistrationBean.setFilter(new DemoFilter());
        filterRegistrationBean.addUrlPatterns("/*");  // 配置需要过滤的路径
        filterRegistrationBean.setName("filterDemo");
        return filterRegistrationBean;
    }
}

如果filter 里要用到bean对象,则要在注册filter里,将bean对象传过去。如下:

filter要用到 studentMapper对象

第一步:先建filter类

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

public class DemoFilter implements Filter {

    private StudentMapper studentMapper;
    // 构造函数
    public DemoFilter(StudentMapper studentMapper) {
        this.studentMapper = studentMapper;
    }
    
    @Override
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
        System.out.println(" 进入了filter " );
        chain.doFilter(request,response);
    }
}

第二步,注册filter

import org.springframework.boot.web.servlet.FilterRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.annotation.Order;

import javax.annotation.Resource;

@Configuration
public class FilterConfiger {
    @Resource
    private StudentMapper studentMapper;

    @Bean
    // @Order(1)    //spring boot会按照order值的大小,越小越先执行
    public FilterRegistrationBean configFilter(){
        FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean();
        filterRegistrationBean.setFilter(new DemoFilter(studentMapper)); // new DemoFilter时传bean过去
        filterRegistrationBean.addUrlPatterns("/*");
        filterRegistrationBean.setName("filterDemo");
        return filterRegistrationBean;
    }
}

相关