步骤:
1、实现javax.servlet.Filter
接口,实现doFilter()
方法
2、添加@Configuration
注解,通过FilterRegistrationBean
实例注册,将自定义Filter加入过滤链,可自定义过滤器的优先级、拦截路径
一、实现Filter接口
为了演示优先级,这里创建2个测试过滤器类:Test1Filter、Test2Filter
import javax.servlet.*;
import javax.servlet.http.HttpServletRequest;
import java.io.IOException;
public class Test1Filter implements Filter {
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
HttpServletRequest request = (HttpServletRequest) servletRequest;
System.out.println("自定义过滤器filter1,拦截url:"+request.getRequestURI());
filterChain.doFilter(servletRequest, servletResponse);
}
}
import javax.servlet.*;
import javax.servlet.http.HttpServletRequest;
import java.io.IOException;
public class Test2Filter implements Filter {
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
HttpServletRequest request = (HttpServletRequest) servletRequest;
System.out.println("自定义过滤器filter2,拦截url:"+request.getRequestURI());
filterChain.doFilter(servletRequest, servletResponse);
}
}
二、将自定义Filter加入过滤链
import com.eju.houseparent.config.starter.cat.Test1Filter;
import com.eju.houseparent.config.starter.cat.Test2Filter;
import org.springframework.boot.web.servlet.FilterRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class TestFilterRegistrationBean{
@Bean
public FilterRegistrationBean<Test1Filter> RegistTest1(){
//通过FilterRegistrationBean实例设置优先级可以生效
FilterRegistrationBean<Test1Filter> bean = new FilterRegistrationBean<Test1Filter>();
bean.setFilter(new Test1Filter());//注册自定义过滤器
bean.setName("flilter1");//过滤器名称
bean.addUrlPatterns("/*");//过滤所有路径
bean.setOrder(1);//优先级,越低越优先
return bean;
}
@Bean
public FilterRegistrationBean<Test2Filter> RegistTest2(){
//通过FilterRegistrationBean实例设置优先级可以生效
FilterRegistrationBean<Test2Filter> bean = new FilterRegistrationBean<Test2Filter>();
bean.setFilter(new Test2Filter());//注册自定义过滤器
bean.setName("flilter2");//过滤器名称
bean.addUrlPatterns("/test/*");//过滤所有/test路径
bean.setOrder(6);//优先级,越低越优先
return bean;
}
}
版权声明:本文为weixin_43453386原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。