拦截器实现、拦截器不过滤路径配置失效问题、读取资源文件

一、拦截器实现:

1.实现 HandlerInterceptor 接口,重写 preHandle() 方法即可,代码如下:

@Component
@RequiredArgsConstructor(onConstructor = @__(@Autowired))
public class ThirdInterceptor implements HandlerInterceptor {
    private final JwtOperator jwtOperator;

    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        // 业务代码……

        // 放行
        return HandlerInterceptor.super.preHandle(request, response, handler);

        // 拦截
        // return false;

        // 或抛异常
        // throw new Exception("异常信息");
    }
}

2.拦截器配置类,代码如下:

@Configuration
@RequiredArgsConstructor(onConstructor = @__(@Autowired))
public class InterceptorConfig implements WebMvcConfigurer {
    private final ThirdInterceptor thirdInterceptor;

    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        // excludePathPatterns() 方法设置过滤路径,addPathPatterns() 方法设置拦截路径
        registry.addInterceptor(thirdInterceptor).excludePathPatterns("/doc.html", "/user/**",
                "/swagger-resources", "/swagger-resources/configuration/ui")
                .addPathPatterns("/**");
        WebMvcConfigurer.super.addInterceptors(registry);
    }
}

注意,过滤路径可能会有不生效问题,大概率是写错了路径。路径写的是接口里的路径,如果项目中配置了统一的访问前缀,不能写进去!例如下方yml配置:

server:
  port: 8080
  #设置统一访问前缀
  servlet:
    context-path: /api/v1

若有该统一前缀配置,前端要访问后端的/doc.html 接口的访问路径则是:/api/v1/doc.html,如果配置过滤路径写成如下图,则会导致过滤配置失效,配置错误代码如下图:

 配置类正常配置完毕后拦截器则生效。

二、读取资源文件:

如图,若要读取下图的 third-pass-url.yml 文件(resource文件夹下)

 

代码如下:

// 指定文件
        ClassPathResource classPathResource = new ClassPathResource("third-pass-url.yml");

        // 创建输入流
        InputStream in = classPathResource.getInputStream();

        // 读取内容
        StringBuilder sb = new StringBuilder();
        byte[] buffer = new byte[1024];
        while (in.read(buffer, 0, 1024) != -1) {
            sb.append(new String(buffer));
        }
        System.out.println("文件内容:" + sb.toString());

        // 关闭流
        in.close();

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值