方法一
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); } }这种方法和方法一的效果一样,但是这个方法用起来比较简单。