**
* @Auther: Jhon Li
* @Date: 2018/12/20 11:51
* @Description: 過濾器 spring自己的可以用 component註解 來注入,如果是第三方就需要從新 通過 配置類來注入,config中
*
* 缺點 :可以拿到http請求的原始信息,但是拿不到真正處理這個請求的方法信息
*/
//@Component 這個註解式全部路徑過濾
public class TimeFilter implements Filter {
@Override
public void init(FilterConfig filterConfig) throws ServletException {
System.out.println("time filter init");
}
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
System.out.println("time filter start");
long time = new Date().getTime();
filterChain.doFilter(servletRequest,servletResponse);
System.out.println("time filter :"+(new Date().getTime()-time));
System.out.println("time filter finish");
}
@Override
public void destroy() {
System.out.println("time filter destroy");
}
}
也可以在配置類注入
/**
* @Auther: Jhon Li
* @Date: 2018/12/20 12:04
* @Description:
*/
@Configuration
public class WebConfig extends WebMvcConfigurerAdapter{
@Autowired
private TimeInterceptor timeInterceptor;
//添加攔截器到配置中
@Override
public void addInterceptors(InterceptorRegistry registry) {
// registry.addInterceptor(timeInterceptor);
}
// @Bean
public FilterRegistrationBean filterRegistrationBean(){
FilterRegistrationBean filterRegistrationBean=new FilterRegistrationBean();
TimeFilter timeFilter=new TimeFilter();
filterRegistrationBean.setFilter(timeFilter);
List<String> urls=new ArrayList<>();
urls.add("/**"); //指定那些url 過濾
filterRegistrationBean.setUrlPatterns(urls);
return filterRegistrationBean;
}
}