SpringBoot之拦截器的配置

什么是拦截器

拦截器(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;
    }
}

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

@Component
public class InteceptorConfig implements WebMvcConfigurer {
    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(new FirstInteceptor()).
                addPathPatterns("/a/*").
                excludePathPatterns("/a/b/*");
    }
}

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

@RestController
public class HelloController {

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

    @RequestMapping("/a/b/c")
    public String goodAfternoon(){
        return "下午好!";
    }
}

在这里插入图片描述

测试结果

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

补充

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值