Spring Boot中使用过滤器和拦截器
过滤器(Filter)和拦截器(Interceptor)是Web项目中常用的两个功能,本文将简单介绍在Spring Boot中使用过滤器和拦截器来计算Controller中方法的执行时长,并且简单对比两者的区别。
现有如下Controller:
@RestController
@RequestMapping("user")
public class UserController {
@GetMapping("/{id:\\d+}")
public void get(@PathVariable String id) {
System.out.println(id);
}
}
下面通过配置过滤器和拦截器来实现对get方法执行时间计算的功能。
1.过滤器
定义一个TimeFilter类,实现javax.servlet.Filter:
public class TimeFilter implements Filter{
@Override
public void init(FilterConfig filterConfig) throws ServletException {
System.out.println("过滤器初始化");
}
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
System.out.println("开始执行过滤器");
Long start = new Date().getTime();
filterChain.doFilter(servletRequest, servletResponse);
System.out.