SpringBoot自定義過濾器
阿新 • • 發佈:2019-02-04
方法一
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)表示執行順序,值越小,越先執行。@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"); } }
2.在SpringBoot加上如下註解,@ServletComponentScan
@SpringBootApplication
@ServletComponentScan
public class SpringbootLearningApplication {
public static void main(String[] args) {
SpringApplication.run(SpringbootLearningApplication.class, args);
}
}
這種方法和方法一的效果一樣,但是這個方法用起來比較簡單。