拦截器

拦截器机制

前端发送请求,通过控制器完成定义好的方法,在将数据渲染到前端。拦截器分为三个方法分别是preHandlepostHandleafterCompletion,我们可以分别利用这三个方法在控制器作用前、后以及数据渲染完成之后将流程拦截,来进行自定义好的操作(比如放行那些请求、加某些数据)

  • 步骤:
    1.创建用于存放拦截器的包,一般命名为interceptor
    2.创建类,类中重写三个方法,需要实现HandlerInterceptor接口(这个类就是拦截器)
    3.按照需求在方法中书写代码(逻辑判断等)
    4.拦截器在定义好之后,要让拦截器进行工作
    • 1.配置好拦截器要拦截的请求
    • 2.把配置放到容器当中
    • 3.指定拦截规则

创建配置类,用于进行第4步中的操作

  • 1.配置类实现WebMvcConfigurer的抽象方法
  • 2.在重写方法中利用addInterceptor()方法将前面创建的拦截器类放置到容器当中
  • 3.利用addPathpatterns()方法声明需要拦截那些请求,如,addPathpatterns("/")就代表拦截所有请求,包括了静态资源的请求,这就意味着页面的渲染也会被拦截**
  • 4.利用excludePathPatterns()方法声明需要放行那些请求,如,excludePathPatterns("/","/login")就代表放行/以及/login请求
    为了解决3中的问题,我们可以通过两种方式:
    • 1.在excludePathPatterns()中将static中的包,都以"/包名/"的方式放行;例如static中有一个school包,这个包下方了很多静态资源,那么我们可以excludePathPatterns("/school/"),但包多的时候就会声明太多次
    • 2.或者将静态资源的访问路径进行配置,比如前面必须有static,那么就可以直接放行static路径下的所有"/static/**"

preHandle

postHandle

afterCompletion

posted @ 2023-02-24 20:03  BattleTrumpet  阅读(138)  评论(0)    收藏  举报