1.新建一个TimeIntercepter类并实现HandlerIntercepter接口
@Component
public class TimeInterceptor implements HandlerInterceptor {
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
System.out.println("TimeInterceptor:preHandle");
return true;
}
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
System.out.println("TimeInterceptor:postHandle");
}
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
System.out.println("TimeInterceptor:afterCompletion");
}
}
2.在配置类中将TimeIntercepter注入到容器中
@Configuration
public class WebConfig extends WebMvcConfigurationSupport{
@Autowired
private TimeInterceptor timeInterceptor;
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(timeInterceptor).addPathPatterns("/users/save"); //配置拦截规则
}
}
3.启动项目,在浏览器中输入localhost:8080/users/save
可看到控制台输出如下信息,
TimeFilter start
TimeInterceptor:preHandle
TimeInterceptor:postHandle
TimeInterceptor:afterCompletion
TimeFilter finish
由于在写这篇文章之前写过过滤器,所以这里会打印出过滤器的信息,从这里也可以看出过滤器与拦截器的执行顺序为:
过滤器->拦截器。