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

相关推荐
jasnet_u6 天前
SpringMVC 请求处理深度解析:从 DispatcherServlet 到视图渲染
spring·springmvc·springboot
Cyan_RA97 天前
SpringMVC 数据格式化处理 详解
java·开发语言·spring·mvc·ssm·springmvc·数据格式化
一只大袋鼠9 天前
SpringMVC 框架中的拦截器
java·springmvc·javaweb·拦截器
一只大袋鼠10 天前
SpringMVC全局异常处理
java·开发语言·springmvc·javaweb
一只大袋鼠11 天前
JavaWeb四种文件上传方式(下篇)
java·开发语言·springmvc·javaweb
庞轩px12 天前
第三篇:SpringMVC——一个HTTP请求在Spring中经历了什么?
网络协议·spring·http·springmvc·handlermapping·前端控制器
Cyan_RA913 天前
SpringMVC 视图和视图解析器 万字详解
java·spring·mvc·springmvc·请求重定向·modelandview·视图解析器
javachen__15 天前
Spring MVC 动态支持 JSON/XML 的技巧
spring·springmvc
Cyan_RA920 天前
SpringMVC 请求数据绑定与参数映射 详解
java·后端·spring·mvc·springmvc·映射请求数据
傻瓜搬砖人20 天前
SpringMVC简介
springmvc