spring mvc 提供了 aop的拦截器,拥有更加细致的拦截能力,在spring boot 中提供了更加方便的处理方式
HandlerInterceptor:用于完成拦截器的方式
在使用的时候只需要 实现该拦截器接口
/**
* 自定义拦截器
*/
public class MyInterceptor implements HandlerInterceptor {
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
// 如果返回的是false 则后面的所有数据都不会执行,如果是拦截器链,只有都返回true 的时候,才会执行下面的数据
System.err.println("MyInterceptor >>>> preHandle");
return true;
}
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
// 只有当preHandle 返回true 的时候,才会执行
System.err.println("MyInterceptor >>> postHandle");
}
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
// 只有当preHandle 返回true的时候,才会执行该方法
System.err.println("MyInterceptor >>> afterCompletion");
}
}
还需要进行使用
/**
* 自定义拦截器
*/
@Configuration
public class WebMvcConfig implements WebMvcConfigurer {
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(new MyInterceptor())
.addPathPatterns("/**")
.excludePathPatterns("/hello");
}
}
其中 addPathPatterns 表示拦截的路径 、 excludePathPatterns 表示排除的路径