背景

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

版本信息

Springboot:2.7.17

方案

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

方案三详解

yaml增加后缀功能

spring:
mvc:
pathmatch:
matching-strategy: ant_path_matcher
use-suffix-pattern: true

编码侧

/**
* @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

SpringBoot兼容SpringMVC带有.do后缀的请求的更多相关文章

  1. SpringBoot对比SpringMVC,SpringMVC 处理请求过程

    (问较多:1.SpringBoot对比SpringMVC.2.SpringMVC 处理请求过程.问:springboot的理解 Spring,Spring MVC,Spring Boot 三者比较 S ...

  2. SpringBoot接管SpringMvc

    SpringBoot接管SpringMvc Spring Web MVC framework(通常简称为“Spring MVC”)是一个丰富的“model 视图控制器”web framework. S ...

  3. java框架之SpringBoot(5)-SpringMVC的自动配置

    本篇文章内容详细可参考官方文档第 29 节. SpringMVC介绍 SpringBoot 非常适合 Web 应用程序开发.可以使用嵌入式 Tomcat,Jetty,Undertow 或 Netty ...

  4. SpringBoot中SpringMVC的自动配置以及扩展

    一.问题引入 我们在SSM中使用SpringMVC的时候,需要由我们自己写SpringMVC的配置文件,需要用到什么就要自己配什么,配置起来也特别的麻烦.我们使用SpringBoot的时候没有进行配置 ...

  5. [转]struts2处理.do后缀的请求

    原文地址:http://skyuck.iteye.com/blog/545988 默认情况下,struts2是无法处理以.do为后缀的请求url的(默认情况下是.action或者不填,可以参见org. ...

  6. struts2处理.do后缀的请求

    默认情况下,struts2是无法处理以.do为后缀的请求url的(默认情况下是.action或者不填,可以参见org.apache.struts2包下的default.properties文件). 但 ...

  7. Springboot中使用AOP统一处理Web请求日志

    title: Springboot中使用AOP统一处理Web请求日志 date: 2017-04-26 16:30:48 tags: ['Spring Boot','AOP'] categories: ...

  8. SpringMVC中使用Ajax POST请求以json格式传递参数服务端通过request.getParameter("name")无法获取参数值问题分析

    SpringMVC中使用Ajax POST请求以json格式传递参数服务端通过request.getParameter("name")无法获取参数值问题分析 一:问题demo展示 ...

  9. Struts2 无后缀action请求

    如果将Struts2的filter-mapping配置成 <filter-mapping> <filter-name>struts2</filter-name> & ...

  10. 解决微信小程序用 SpringMVC 处理http post时请求报415错误

    解决微信小程序用 SpringMVC 处理http post时请求返回415错误 写微信小程序时遇到的问题,这个坑硬是让我整了半天 wx.request请求跟ajax类似处理方法一致 小程序端请求代码 ...

随机推荐

  1. 什么是JS执行上下文?

    我们都知道,JS代码的执行顺序总是与代码先后顺序有所差异,当先抛开异步问题你会发现就算是同步代码,它的执行也与你的预期不一致,比如: function f1() { console.log('听风是风 ...

  2. MySQL 索引失效

    全列匹配 最佳左前缀法则 不在索引列上做任何操作(计算.函数.自动.手动类型转换),会导致索引失效 存储引擎不能使用索引中范围条件右边的列 尽量使用覆盖索引(只访问索引的查询(索引和查询列一致)),少 ...

  3. 经典面试题函数柯里化: add(1)(2)(3) = 6

    function currying() { const args = Array.prototype.slice.call(arguments); const inner = function () ...

  4. Django model层之执行原始SQL查询

    Django model层之执行原始SQL查询 by:授客 QQ:1033553122 测试环境 Win7 Django 1.11   执行原始SQL查询 Manager.raw(raw_query, ...

  5. Django model 层之聚合查询总结

    Django model 层之聚合查询总结 by:授客 QQ:1033553122 实践环境 Python版本:python-3.4.0.amd64 下载地址:https://www.python.o ...

  6. c++17

    std::variant<std::string,int,float>://作为联合体 using va = std::variant<std::string, int, float ...

  7. pytest-req插件:更简单的做接口测试

    pytest-req插件:更简单的做接口测试 背景 我们经常会用到 pytest 和 requests 进行接口自动化测试. pytest 提供了非常方便的插件开发能力,在pytest中使用reque ...

  8. 【Vue】MineData 地图接入

    一.文档资料: MineData开放平台: https://minedata.cn/md-platform/login/login MineData V2.1.0 接口文档: http://113.1 ...

  9. 【JavaScript】Jquery事件绑定问题

    我们所知道的选择器方式,其中有一种方式是属性选择器: <div style="display: flex; justify-content: space-between;"& ...

  10. 强化学习baseline论文—— rainbow算法中给出实验结果的54个atari2600游戏名称列表

    alien amidar assault asterix asteroids atlantis bank_heist battle_zone beam_rider berzerk bowling bo ...