拦截器入门案例

制作拦截器功能类

配置拦截器的执行位置

com.xxx.controller 下创建 interceptor 目录

package com.xxx.controller.interceptor;

@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 boolean afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
        System.out.println("afterCompletion...");
    }
}

SpringMvcSupport.java

package com.xxx.config;

@Configuration
public class SpringMvcSupport extends WebMvcConfigurationSupport {
    @Autowired
    private ProjectInterceptor projectInterceptor;

    @Override
    protected void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.addResourceHandlers("/pages/**").addResourceLocations("/pages/");
    }

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

SpringMvcConfig.java

package com.xxx.config;

@Configuration
@ComponentScan({"com.xxx.controller", "com.xxx.config"})
@EnableWebMvc
public class SpringMvcConfig {

}

SpringMvcConfig.java

@Configuration
@Component({"com.xxx.controller"})
@EnableWebMvc
public class SpringMvcConfig implements WebMvcConfigurer {
    @Autowired
    private ProjectInterceptor projectInterceptor;

    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptors(projectInterceptor).addPathPatterns("/books", "/books/*");
    }
}