需要实现Filter接口的标准 Filter是Servlet的概念,不属于spring
过滤器执行的顺序 注:只有通过该配置方式创建的过滤器顺序才会生效(通过注解创建的过滤器不会生效),传入的数值越大排名越高 如:f1=100,f2=99 顺序:f1-f2
通过注解形式创建的过滤器的执行优先级要比通过配置文件创建过滤器高
WebFilter这个注解并没有指定执行顺序的属性,其执行顺序依赖于Filter的名称,是根据Filter类名(注意不是配置的filter的名字)的字母顺序倒序排列
配置文件创建方式1:
import javax.servlet.*;
import java.io.IOException;
/**
* Auther: ruoyu
* Date: 19-2-18
* Description: 过滤测试1 配置文件创建过滤器
*/
public class FilterTest1 implements Filter {
/**
* 初始化时
* @param filterConfig
* @throws ServletException
*/
@Override
public void init(FilterConfig filterConfig) throws ServletException {}
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
long l = System.currentTimeMillis();
filterChain.doFilter(servletRequest,servletResponse);
System.out.println("FilterTest1 本次请求耗时: "+(System.currentTimeMillis()-l));
}
/**
* 销毁时
*/
@Override
public void destroy() {}
}
import javax.servlet.*;
import java.io.IOException;
/**
* Auther: ruoyu
* Date: 19-2-18
* Description:过滤器测试2 通过注解形式创建
*/
public class FilterTest2 implements Filter {
@Override
public void init(FilterConfig filterConfig) throws ServletException {}
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
long l = System.currentTimeMillis();
filterChain.doFilter(servletRequest,servletResponse);
System.out.println("FilterTest2 本次请求耗时: "+(System.currentTimeMillis()-l));
}
@Override
public void destroy() {}
}
/**
* 过滤器配置1 通过配置文件形式配置
* @return
*/
@Bean
public FilterRegistrationBean registFilter1() {
FilterRegistrationBean registration = new FilterRegistrationBean();
registration.setFilter(new FilterTest1()); //需要加载的过滤器
registration.addUrlPatterns("/*"); //捕捉的路径
registration.setName("registFilter1"); //该过滤器的名称
registration.setOrder(1); //过滤器执行的顺序 注:只有通过该配置方式创建的过滤器顺序才会生效(通过注解创建的过滤器不会生效),传入的数值越大排名越高 如:f1=100,f2=99 顺序:f1-f2
return registration;
}
@Bean
public FilterRegistrationBean registFilter2() {
FilterRegistrationBean registration = new FilterRegistrationBean();
registration.setFilter(new FilterTest2());
registration.addUrlPatterns("/*");
registration.setName("registFilter2");
registration.setOrder(100);
return registration;
}
注解创建方式2:
**
* Auther: ruoyu
* Date: 19-2-18
* Description: 注解形式创建的过滤器
*/
@WebFilter(filterName = "AnnotationsFilterTest01",urlPatterns = "/*")
public class FilterTest3 implements Filter {