当前位置:   article > 正文

SpringBoot之拦截器的配置_拦截器只拦截 restcontroller

拦截器只拦截 restcontroller

什么是拦截器

拦截器(Inteceptor)可以拦截Action请求, 可以判断后决定请求是否通过, 并在请求前、请求后、视图渲染后执行自定义的操作. 试想下: 你在一台新设备上想通过网页登陆QQ空间, 那势必要先在登陆界面通过登陆验证吧? 你不登陆就直接访问空间地址, 那你这个访问请求就会被"拦截"并告知你尚未登陆!

配置过程

新建SpringBoot项目, 这里端口我习惯改成8001
在这里插入图片描述
项目的完整结构如下:
在这里插入图片描述
先写一个类让它实现HandlerInterceptor接口:

public class FirstInteceptor implements HandlerInterceptor {
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        System.out.println("我是拦路虎");
        return true;
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

在这里插入图片描述
紧接着写它的配置类, 做添加拦截路径等工作:
别忘了写@Component注解,把它注册到Spring容器中

@Component
public class InteceptorConfig implements WebMvcConfigurer {
    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(new FirstInteceptor()).
                addPathPatterns("/a/*").
                excludePathPatterns("/a/b/*");
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

在这里插入图片描述
剩下的只要写一个处理器了:

@RestController
public class HelloController {

    @RequestMapping("/a/b")
    public String goodMorning(){
        return "早上好!";
    }

    @RequestMapping("/a/b/c")
    public String goodAfternoon(){
        return "下午好!";
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

在这里插入图片描述

测试结果

在浏览器中访问地址如下, 这个路径会被拦截, 拦截后放行
在这里插入图片描述
浏览器响应如下:
在这里插入图片描述
控制台响应如下:
在这里插入图片描述
拦截成功!
那么,我们换成另一个不会被拦截的路径:
在这里插入图片描述
浏览器响应如下:
在这里插入图片描述
控制台没有输出,说明未被拦截,正如所愿!

补充

preHandle是在请求完成前执行的方法, 常用的还有个postHandle方法,那是在请求完成后执行的方法,配置起来也是同理

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/天景科技苑/article/detail/972903
推荐阅读
相关标签
  

闽ICP备14008679号