首页 > 其他分享 >SpringBoot2.7.18拦截器失效不起作用

SpringBoot2.7.18拦截器失效不起作用

时间:2024-08-04 16:18:19浏览次数:17  
标签:SpringBoot2.7 18 springframework public 拦截器 import org servlet annotation

这几天在做项目,从其他项目中复制粘贴拦截器的代码,然后修修改改,但是拦截器一直不起作用,请求来了进不去,最后发现是我写错了,代码如下:
配置文件:
application.yml

server:
  port: 8080
  servlet:
    context-path: /api/v1

#springboot的配置
spring:
  datasource: #定义数据源
    #127.0.0.1为本机测试的ip,3306是mysql的端口号。serverTimezone是定义时区,照抄就好,mysql高版本需要定义这些东西
    #useSSL也是某些高版本mysql需要问有没有用SSL连接
    url: jdbc:mysql://127.0.0.1:3306/testdb?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=Hongkong&useAffectedRows=true
    username: root  #数据库用户名,root为管理员
    password: 12345678 #该数据库用户的密码
    # 使用druid数据源
    type: com.alibaba.druid.pool.DruidDataSource
  thymeleaf:
    encoding: UTF-8  #编码规范 默认
    cache: false #开发阶段建议关闭缓存
    prefix: classpath:/templates/
    suffix: .html
    mode: LEGACYHTML5 #用非严格的HTML5 默认是HTML5
    servlet:
      content-type: text/html

# mybatis-plus相关配置
mybatis-plus:
  # xml扫描,多个目录用逗号或者分号分隔(告诉 Mapper 所对应的 XML 文件位置)
  mapper-locations: classpath:mapper/*.xml
  # 以下配置均有默认值,可以不设置
  global-config:
    db-config:
      #主键类型 AUTO:"数据库ID自增" INPUT:"用户输入ID",ID_WORKER:"全局唯一ID (数字类型唯一ID)", UUID:"全局唯一ID UUID";
      id-type: auto
      #字段策略 IGNORED:"忽略判断"  NOT_NULL:"非 NULL 判断")  NOT_EMPTY:"非空判断"
      field-strategy: NOT_EMPTY
      #数据库类型
      db-type: MYSQL
  configuration:
    # 是否开启自动驼峰命名规则映射:从数据库列名到Java属性驼峰命名的类似映射
    map-underscore-to-camel-case: true
    # 如果查询结果中包含空值的列,则 MyBatis 在映射的时候,不会映射这个字段
    call-setters-on-nulls: true
    # 这个配置会将执行的sql打印出来,在开发或测试的时候可以用
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl

# 日志配置
logging:
  group:
    tomcat:
      - org.apache.catalina
      - org.apache.coyote
      - org.apache.tomcat
  # pre-defined
  level:
    tomcat: INFO
    web: DEBUG
    sql: DEBUG

WebConfig.java

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

/**
 * 拦截器
 */
@Configuration
public class WebConfig implements WebMvcConfigurer {

    @Autowired
    private RequestHandlerInterceptor requestHandlerInterceptor;

    @Value("${server.servlet.context-path}")
    private String contextPath;

    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(requestHandlerInterceptor)
                // 需要排除contextPath的值
                .addPathPatterns(contextPath + "/**") // 即/api/v1/**
                .excludePathPatterns(Consts.EXCLUDE_PATH_PATTERNS);
    }
}

RequestHandlerInterceptor.java

import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;
import java.util.Arrays;

/**
 * @Author SingleKey
 * @Date 2024/7/28 8:27
 */
@Component
public class RequestHandlerInterceptor implements HandlerInterceptor {

    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws ServletException, IOException {
        System.out.println("\n-------- RequestHandlerInterceptor.preHandle --- ");
        return false;
    }

    @Override
    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
        System.out.println("\n-------- RequestHandlerInterceptor.postHandle --- ");


    }

    @Override
    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
        System.out.println("\n-------- RequestHandlerInterceptor.afterCompletion --- ");
    }
}

乍一看好像没有问题,错误的地方是WebConfig.java的addPathPatterns(contextPath + "/**")这段代码,如果在配置文件中设置了context-path,那就不能再在这么写:addPathPatterns(contextPath + "/**"),不然将永远匹配不到,其实也是自己debug能力的欠缺,以及对SpringBoot的不够熟悉导致的,今日记下这个问题,供大家参考。

server:
  port: 8080
  servlet:
    context-path: /api/v1

标签:SpringBoot2.7,18,springframework,public,拦截器,import,org,servlet,annotation
From: https://www.cnblogs.com/datom/p/18341892

相关文章

  • Angular项目如何使用拦截器 httpClient 请求响应处理
    在Angular中,拦截器(Interceptor)是一种用于拦截和处理HTTP请求或响应的机制。HttpClient模块提供了一种方便的方式来创建拦截器,以便在发送请求或接收响应之前或之后执行一些操作。以下是如何在Angular项目中使用HttpClient拦截器的基本步骤:创建拦截器类:首先,你需要创建一个继承自H......
  • SSM 大学食堂订餐系统APP 毕业毕设-附源码75418
                      摘要本论文主要论述了如何使用SSM框架开发一个大学食堂订餐系统APP,将严格按照软件开发流程进行各个阶段的工作,面向对象编程思想进行项目开发。在引言中,作者将论述大学食堂订餐系统APP的当前背景以及系统开发的目的,后续章节......
  • Ubuntu24.04-EDA2018.06
    0.PreperationWindows11VMwareWorkstation17ProUbuntu24.04VCS_VERDI2018.061.Install1.在ubuntu中新建synopsys文件夹cd/home/wenmkdirsynopsys#在/home/wen/目录下新建synopsys文件夹sudochmod777synopsys/#添加权限2.将windows文件下载到......
  • day018二叉树
    530.二叉树的最小绝对差给你一个二叉搜索树的根节点 root ,返回 树中任意两不同节点值之间的最小差值 。差值是一个正数,其数值等于两值之差的绝对值。 思路:此题与昨天的验证二叉搜索树很像,同样是中序遍历将二叉树节点按照顺序加入到动态数组中,随后遍历动态数组,维护一......
  • 嵌入式学习---DAY18:shell脚本
    shell脚本文件进程网络HtmlDbshell脚本是一系列shell命令的集合。  shell  命令解释器shell编程:解释型语言、边翻译边执行、擅长文件处理,操作系统管理、开发效率高  cp 1  2、执、效率低、移植性好C语言:编译型语言、先编译再执行、擅长数据计算和数据处理、开发......
  • K12182 挂号系统
    题目描述科丁医院想请科丁博士帮忙编写一个挂号系统。具体是这样的,最近来医院看病的人越来越多了,因此很多人要排队,只有当空闲时放一批病人看病。但医院的排队不同其他排队,因为多数情况下,需要病情严重的人优先看病,所以希望科丁博士设计系统时,以病情的严重情况作为优先级,判断接......
  • 使用一个io口同时兼容连接dht11和18b20温度传感器
    一个io口同时兼容dht11和18b20温度传感器,也就是说这个io口设计具有高度灵活性,可以兼容DHT11和18B20两种不同类型的温度传感器(一次只能连接一种温度传感器)。用户可以轻松地在同一个io口上连接不同的传感器,从而实现更广泛的应用。这种设计不仅简化了操作流程,也为未来连接其他传感......
  • 代码随想录算法训练营Day18 | Leetcode 530 二叉搜索树的最小绝对差 Leetcode 236 二
    前言今天有一道题目没写,二叉搜索树中的众数,有点太难理解了,先放一放。Leetcode530二叉搜索树的最小绝对差题目链接:530.二叉搜索树的最小绝对差-力扣(LeetCode)代码随想录题解:代码随想录(programmercarl.com)思路:二叉搜索树的性质是中序遍历为升序的,所以我们想找最小绝......
  • 使用C++实现GB28181信令服务中心
    一。背景:   参照开源的GB28181信令服务wvp,准备使用C++实现一套自研的轻量级GB信令服务中心。因此对GB28181协议进行了梳理并且编写了Demo验证,现在把过程整理下来。   希望将来能够实现一套完整的GB28181信令服务。使用了eXosip库。二。GB28181协议栈:三。GB28181信......
  • Day18 二叉树Part6
    目录任务530.二叉搜索树的最小绝对差思路501.二叉搜索树中的众数思路236.二叉树的最近公共祖先思路心得体会任务530.二叉搜索树的最小绝对差给你一个二叉搜索树的根节点root,返回树中任意两不同节点值之间的最小差值。差值是一个正数,其数值等于两值之差的绝对值。思路......