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());
}