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

相关推荐
阿华的代码王国15 天前
【Spring项目】表白墙,留言板项目的实现
java·springmvc·表白墙
IT机器猫17 天前
SpringMvc完整知识点二(完结)
java·ssm·springmvc
森屿Serien18 天前
SpringMVC
mvc·springmvc
耀耀_很无聊1 个月前
第13章 全注解开发
springmvc
耀耀_很无聊1 个月前
第11章 Spring MVC执行流程
java·spring·mvc·springmvc
cooldream20091 个月前
SpringMVC 执行流程详解
java·spring·springmvc
ModelBulider1 个月前
SpringMVC应用专栏介绍
java·开发语言·后端·spring·springmvc
楠寻寻1 个月前
Spring、SpringMVC、SpringBoot、Mybatis小结
spring boot·spring·mybatis·springmvc
ModelBulider1 个月前
十四、SpringMVC的执行流程
java·开发语言·后端·spring·springmvc
阑梦清川1 个月前
SpringMVC案例学习(一)--计算器设计&&登录页面设计
java·登录页面·springmvc·案例计算器