1、拦截器与过滤器 ①拦截器interceptor是springMvc提供的技术,主要是对处理方法的拦截@xxxMapping

实现:

1、实现HandlerInterceptor接口重写方法(ctrl+o选择重写的方法)

               preHandle  目标资源执行前执行 实现拦截功能方法
                              posthandle执行之后执行

    2、注册(书写配置类,但是注册之前要让spring发现拦截器使用component注解)

//@Configuration//表示当前类是配置类 就是告诉spring我这里有一些配置内容需要读取 //你有什么配置内容呢? 当前要注册一个拦截器--实现一个规则接口 WebMvcConfigurer

public class WebConfig implements WebMvcConfigurer {
@Autowired //从spring中拿到拦截器对象
private LoginCheckInterceptor loginCheckInterceptor;
//实现 注册拦截器
@Override
public void addInterceptors(InterceptorRegistry registry) {
// registry 注册器 完成拦截器对象的注册
//        registry.addInterceptor(拦截对象).addPathPatterns(拦截路径规则).excludePathPatterns(不拦截的路径)
registry.addInterceptor(loginCheckInterceptor)
.addPathPatterns("/**").excludePathPatterns("/error","/user/login");


②过滤器是javaEE技术可以对所有的访问服务器的资源实现拦截过滤(静态页面 后端资源)

第1步,定义过滤器 :1.定义一个类,实现 Filter 接口,并重写其所有方法。

第2步,配置过滤器:Filter类上加 @WebFilter 注解,配置拦截资源的路径。引导类上加 @ServletComponentScan 开启Servlet组件支持。

@WebFilter(urlPatterns = "/") //配置过滤器要拦截的请求路径( / 表示拦截浏览器的所有请求 )

2、全局异常处理 @RestControllerAdvice //responsebody+controllerAdvice @Slf4j public class GlobalExceptionHandler {

/**
 * 捕获业务异常
 *
 * @param ex
 * @return
 */
@ExceptionHandler
public Result exceptionHandler(BaseException ex) {
    log.error("异常信息:{}", ex.getMessage());
    return Result.error(ex.getMessage());
}