1.在传统web项目中添加filter
TestFilter
com.jiafeng.filter.TestFilter
TestFilter
/*
paramName
paramValue
2.在springboot中添加filter有两种方式
2.1代码注册方式
先定义Filter类:Myfilter,然后通过FilterRegistrationBean将filter注册到调用链中。
@Configuration //相当于spring中的标签
public class WebConfiguration {
@Bean //相当于spring中标签
public FilterRegistrationBean testFilterRegistration() {
FilterRegistrationBean registration = new FilterRegistrationBean<>();
registration.setFilter(new MyFilter());
registration.addUrlPatterns("/*");//配置过滤路径
registration.addInitParameter("paramName", "paramValue");//添加初始值
registration.setName("myFilter");//设置filter名称
registration.setOrder(1);//请求中过滤器执行的先后顺序,值越小越先执行
return registration;
}
public class MyFilter implements Filter {
@Override
public void destroy() {
System.out.println("销毁MyFilter");
}
@Override
public void doFilter(ServletRequest sRequest, ServletResponse sResponse, FilterChain chain)
throws IOException, ServletException {
HttpServletRequest request = (HttpServletRequest) sRequest;
System.out.println("this is MyFilter url :" + request.getRequestURI());
chain.doFilter(sRequest, sResponse);
}
@Override
public void init(FilterConfig arg0) throws ServletException {
System.out.println("初始化MyFilter");
}
}
}
2.2注解注册方式
定义过滤器类:HelloFilter,在过滤器类上添加@WebFilter注解配置过滤器名称、过滤路径等属性,通过@Order配置过滤器执行顺序。
注意使用@WebServlet、@WebFilter、@WebListener等servlet注解时需要在springboot的启动类上添加@ServletComponentScan注解,否则不会生效。
@WebFilter(urlPatterns="/*",filterName="helloFilter",initParams= {@WebInitParam(name="paramName",value="paramValue"),@WebInitParam(name="paramName2",value="paramValue2")})
@Order(2)
public class HelloFilter implements Filter {
@Override
public void destroy() {
}
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain filterChain)
throws IOException, ServletException {
System.out.println("执行过滤器Hello Filter !");
filterChain.doFilter(request, response);
}
@Override
public void init(FilterConfig arg0) throws ServletException {
System.out.println("初始化HelloFilter!");
}
}
启动类
@SpringBootApplication
@ServletComponentScan
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}