14.springboot中的拦截器
Posted 结构化思维wz
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了14.springboot中的拦截器相关的知识,希望对你有一定的参考价值。
springboot中的拦截器
拦截器是AOP编程的一种体现。
-
我们可以用拦截器干什么??
在请求到达controller之前,我们可以增加拦截器做我们需要的需求!
- 日志记录
- 权限检查
- 性能监控
- …
-
拦截器与filter有什么区别
只是启动时机不一样
拦截器的使用方法
1.创建一个拦截器类
package com.example.cors01;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* @author: 王泽
*/
public class MyInterceptor implements HandlerInterceptor {
//该方法作用于请求之前,该方法返回false,请求将不再继续往下
@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("post");
}
//prehandle返回值为true时才会执行,整个请求执行后执行
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
System.out.println("after");
}
}
2.在配置bean中编写
@Configuration
public class WebMvcConfig implements WebMvcConfigurer {
@Override
public void addInterceptors(InterceptorRegistry registry) {
//MyInterceptor拦截所有路径除了/hello,优先级是1
registry.addInterceptor(new MyInterceptor()).addPathPatterns("/**").excludePathPatterns("/hello").order(1);
}
}
3.编写controller
@RestController
public class HelloController {
@GetMapping("/hello")
public String hello() {
System.out.println("hello请求处理");
return "hello";
}
@GetMapping("/hello2")
public String hello2() {
System.out.println("hello2请求处理");
return "hello2";
}
}
以上是关于14.springboot中的拦截器的主要内容,如果未能解决你的问题,请参考以下文章