方法一
1.新建一个TimeFilter类,
public class TimeFilter implements Filter {
@Override
public void init(FilterConfig filterConfig) throws ServletException {
System.out.println("TimeFilter init");
}
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
System.out.println("TimeFilter start");
filterChain.doFilter(servletRequest,servletResponse);
System.out.println("TimeFilter finish");
}
@Override
public void destroy() {
System.out.println("TimeFilter destroy");
}
}
2.新建一个配置类,将TimeFilter注入
@Configuration
public class WebConfig{
@Bean
public FilterRegistrationBean timeFilter() {
FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean();
TimeFilter timeFilter = new TimeFilter();
filterRegistrationBean.setFilter(timeFilter);
List<String> urls = new ArrayList<>();
urls.add("/users/*");
filterRegistrationBean.setUrlPatterns(urls);//配置过滤规则
return filterRegistrationBean;
}
}
3.启动项目,在浏览器输入localhost:8080/users/save,在控制台可看到如下输出
TimeFilter start
TimeFilter finish
方法二
1.新建一个TimeFilter类,
@Order(1)
@WebFilter(urlPatterns = "/users/*",filterName = "TimeFilter")
public class TimeFilter implements Filter {
@Override
public void init(FilterConfig filterConfig) throws ServletException {
System.out.println("TimeFilter init");
}
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
System.out.println("TimeFilter start");
filterChain.doFilter(servletRequest,servletResponse);
System.out.println("TimeFilter finish");
}
@Override
public void destroy() {
System.out.println("TimeFilter destroy");
}
}
其中@Order(1)表示执行顺序,值越小,越先执行。
@SpringBootApplication
@ServletComponentScan
public class SpringbootLearningApplication {
public static void main(String[] args) {
SpringApplication.run(SpringbootLearningApplication.class, args);
}
}
这种方法和方法一的效果一样,但是这个方法用起来比较简单。