1.新建一个过滤器,如下
package com.lvkeyxx.config;
import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import java.io.IOException;
/**
* 过滤器
* 注解方式,需要在启动类上添加 @ServletComponentScan注解
*/
@WebFilter(filterName = "MyFilter",urlPatterns = "/*")
public class MyFilter implements Filter {
@Override
public void init(FilterConfig filterConfig) throws ServletException {
System.err.println("过滤器初始化!!!!!");
}
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
System.err.println("执行过滤器!!!!!");
//在这里实现过滤逻辑
filterChain.doFilter(servletRequest, servletResponse);
}
@Override
public void destroy() {
System.err.println("销毁过滤器!!!!!");
}
}
2.过滤器的注册
- 1 注解方式(需要在启动类上添加 @ServletComponentScan 注解)
/**
* 过滤器
* 注解方式,需要在启动类上添加 @ServletComponentScan注解
*/
WebFilter(filterName = "MyFilter",urlPatterns = "/*")
public class MyFilter implements Filter {
...
}
- 2 通过创建FilterRegistrationBean的方式(此方法需要在java配置代码中即:@Configuration 标注的代码中实现)
/** * 过滤器 * 通过创建FilterRegistrationBean的方式添加注册已创建过滤器,(也可以使用@WebFilter注解直接在已创建过滤器上,但是需要在启动类上添加@ServletComponetScan注解) * 有多个filter就创建多个FilterRegistrationBean ,若需注明filter的执行顺序,可通过registration.setOrder(FilterRegistrationBean.LOWEST_PRECEDENCE - 1)配置, * 值越大,执行顺序越靠后 * @return */ @Bean public FilterRegistrationBean filterRegistrationBean(){ FilterRegistrationBean registrationBean = new FilterRegistrationBean(); //注入过滤器 registrationBean.setFilter(new MyFilter()); //设置过滤规则 registrationBean.addUrlPatterns("/*"); //设置过滤器名称 registrationBean.setName("MyFilter"); //设置过滤器执行顺序,数值越小优先级越高 registrationBean.setOrder(FilterRegistrationBean.HIGHEST_PRECEDENCE); return registrationBean; }