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中的拦截器的主要内容,如果未能解决你的问题,请参考以下文章

ViewPager里面的TextView拦截触摸事件

METAL顶点/片段着色器“拦截”结果的最佳方法

如何利用redis来进行分布式集群系统的限流设计

AOP框架Dora.Interception 3.0 [3]: 拦截器设计

servlet,过滤器,监听器,拦截器的区别

谷歌浏览器调试jsp 引入代码片段,如何调试代码片段中的js