拦截器的使用步骤:
1、编写一个拦截器,实现HandlerInterceptor
接口
2、编写一个类,继承WebMvcConfigurerAdapter
抽象类,将其放入Spring容器中,然后重写addInterceptors()方法,并调用给的参数InterceptorRegistry.addInterceptor()
把自己编写的那个拦截器作为参数加进去。
直接贴代码:
pom.xml加入如下依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
编写一个拦截器,实现HandlerInterceptor
接口
public class MyHandlerInterceptor implements HandlerInterceptor {
//在Controller执行之前调用,如果返回false,controller不执行
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
System.out.println("---------preHandle--------");
return true;
}
//controller执行之后,且页面渲染之前调用
@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--------");
}
}
HandlerInterceptor接口几个抽象方法讲解:
preHandler:在Controller执行之前调用
postHandler:controller执行之后,且页面渲染之前调用
afterCompletion:页面渲染之后调用,一般用于资源清理操作
编写一个类,继承WebMvcConfigurerAdapter抽象类,将其放入Spring容器中,然后重写addInterceptors()方法,并调用给的参数InterceptorRegistry.addInterceptor()把自己编写的那个拦截器作为参数加进去。
//@Component也可以
@SpringBootConfiguration
public class MyWebMvcConfigurerAdapter extends WebMvcConfigurerAdapter {
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(new MyHandlerInterceptor());
}
}
编写一个Controller接受请求
@RestController
public class WebController {
@GetMapping("/login")
public String login() {
System.out.println("-----login------");
return "login";
}
}
springboot启动类
@SpringBootApplication
public class BlogApplication {
public static void main(String[] args) {
SpringApplication.run(BlogApplication.class, args);
}
}
浏览器访问:http://localhost:8080/login
控制台结果
ok,以上就是spring-boot 使用HandlerInterceptor拦截器的全部内容。有兴趣的读者可以持续关注笔者的springboot系列文章。