项目结构:
1)先写一个Controller类
@Controller
public class TestHelloController {
@RequestMapping("/testInterceptor")
@ResponseBody
public String testInterceptor() {
return "interceptorController";
}
}
2)写一个Interceptor拦截器类,其中继承HandlerInterceptorAdapter类,并重写其方法。
public class MyInterceptor extends HandlerInterceptorAdapter {
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
System.out.println("MyInterceptor`````");
return true;
}
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
}
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
}
public void afterConcurrentHandlingStarted(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
}
}
3)Config配置类中注册拦截器
以前在springmvc的xml文件注册方式是
<!-- 注册拦截器 -->
<mvc:interceptors>
<mvc:interceptor>
<mvc:mapping path="/**"/>
<!-- 此路径不拦截 -->
<mvc:exclude-mapping path="/method2"/>
<bean class="com._520it.SpringIntercept"></bean>
</mvc:interceptor>
</mvc:interceptors>
现在改为Config类中注册:
@SpringBootApplication
public class AppConfig extends WebMvcConfigurerAdapter {
public static void main(String[] args) {
SpringApplication.run(AppConfig.class, args);
}
//注册拦截器
@Override
public void addInterceptors(InterceptorRegistry registry) {
InterceptorRegistration ir =registry.addInterceptor(myInterceptor());
ir.addPathPatterns("/*");
}
//建立拦截器对象到Spring容器中
@Bean
public MyInterceptor myInterceptor(){
return new MyInterceptor();
}
}