【SpringMVC】拦截器

36 阅读1分钟
  • 在指定的方法调用前后执行

  • 阻止原始方法的执行

过滤器属于Servlet技术,拦截器Interceptor属于SpringMVC的技术。

基本配置

01:ProjectInterceptor

//com.android.controller.interceptor.ProjectInterceptor

@Component
public class ProjectInterceptor implements HandlerInterceptor {
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        System.out.println("preHandle");
        return true;
    }

    @Override
    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
        System.out.println("postHandle");
    }

    @Override
    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
        System.out.println("afterCompletion");
    }
}

02:SpringMvcSupport

//com.android.config.SpringMvcSupport
@Configuration
public class SpringMvcSupport extends WebMvcConfigurationSupport {
    @Autowired
    private ProjectInterceptor projectInterceptor;

    @Override
    protected void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(projectInterceptor).addPathPatterns("/posts/*");
    }
}

执行流程

image.png

多个拦截器的执行顺序

image.png