SpringBoot兼容SpringMVC带有.do后缀的请求

背景

MVC框架请求的都是.do后缀,但controller控制层拦截的是没有后缀的链接。如controller请求/111/222,当请求/111/222.do时,可以正常进入。当我们将存量一些旧工程(SpringMVC框架)升级到Springboot后,发现无法进入,此处我们针对这块进行最丝滑的适配。

版本信息

Springboot:2.7.17

方案

  • 1、请求方改造,将.do删除---除非该系统调用者很少,或者接口很少的情况
  • 2、提供方改造,基于过滤器或者拦截器,拦截到.do后,重定向。--不推荐,所有do请求都会发生重定向
  • 3、提供方改造,兼容.do请求---比较丝滑,推荐🌟🌟🌟🌟🌟

方案三详解

yaml增加后缀功能

yaml 复制代码
spring:
  mvc:
    pathmatch:
      matching-strategy: ant_path_matcher
      use-suffix-pattern: true

编码侧

java 复制代码
/**
 * @author weipt
 * @description 受理.do请求,不发生302重定向
 * @date 2024/9/6 23:09
 */
@Configuration
public class MyWebMvcConfigurer implements WebMvcConfigurer {
    @Override
    public void configureContentNegotiation(ContentNegotiationConfigurer configurer) {
        configurer.mediaType(".do", MediaType.ALL);
    }
}

自测

  • 后端写个controller,拦截/111/222
  • 前端请求/111/222.do
  • 如果能进入,就代表ok

拓展

关于DispatcherServlet

​ 传统的MVC中,我们需要自定义DispatcherServlet,并设置拦截路径,比如*.do,但升级到Springboot后,启动的时候会默认创建DispatcherServlet,并拦截/**,所以我们需要再自定义DispatcherServlet,即使注册,日志中也会提示,这个大家可以观察

关于@EnableMVC注解

​ 我们已经升级到Springboot,该注解已经不需要,反而加上后,会导致一些配置失效,慎用。

帮人帮到底,送佛送到西

如果上述操作,无法解决你的问题,可以与我联系:

邮件地址:weipingtao@qq.com

邮件标题:【问题方案咨询】xxxxx

相关推荐
jingde5283 天前
SpringMVC中使用REST风格
springmvc
_leyilea12 天前
Java内存马系列 | SpringMVC内存马 - 上 | SpringMVC代码分析
java·开发语言·springmvc·内存马
沿途欣赏i15 天前
关于SpringMVC的理解
springmvc
m0_7194145617 天前
【SpringMVC】
java·springmvc
王小二(海阔天空)22 天前
浅谈SpringMvc的核心流程与组件
springmvc·核心流程·核心组件
S-X-S24 天前
SpringMVC核心机制环境搭建
springmvc
S-X-S1 个月前
自定义@ResponseBody以及SpringMVC总结
springmvc
空谷忧人1 个月前
【SpringMVC】SpringMVC中单元方法获取请求数据的方式
java·后端·mvc·springmvc
醉颜凉1 个月前
SpringMVC 运行流程
java·面试·mvc·springmvc·model·controller·view