@RequestMapping上下级请求路径重复产生的问题

在调试Java Spring MVC程序时,遇到请求路径找不到的问题。问题源于同一控制器类内的@RequestMapping注解,当上级和下级路径相同时,Spring MVC初始化时不匹配预期路径。通过修改注解值避免路径重复,确保请求能够正确路由。建议为上下级路径设置不同的值以防止此类问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天调试前辈的程序碰到一个问题,请求某一指定路径,发现报找不到路径的问题

No Mapping found for HTTP request with URL [/dahuaIS/rest/icarus/icarus]

如上路径dahuaIS为工程名,

rest为web.xml配置的拦截路径,

个icarus是控制层Controller类的@RequestMapping("/icarus") [1]

第二个icarus是拦截方法上的@RequestMapping(value="/icarus",..) [2]参数。

 

为什么没有按着期望成功进入到方法里面呢?

一、经过排查发现如上@RequestMapping配置在Sping MVC初始化时装载了如下路径

[/icarus]

[/icarus.*]

[/icarus/]

[/icarus/icarus.*]

[/icarus/icarus/]

为什么会装载成以上路径?这个要去看源码。

如上路径没有一个能匹配我们期望的[/icarus/icarus]

二、当修改[2]式的值为@RequestMapping(value="/icarus/",..)

装配的路径只剩下

[/icarus/icarus/]

此时按着[/dahuaIS/rest/icarus/icarus/]就能访问到。

三、正常情况上下级路径都不一样

[2]式改为@RequestMapping(value="/search",..)

此时装配路径为

[icarus/search]

[icarus/search.*]

[icarus/search/]

此时不管是请求[icarus/search]还是[icarus/search/]都可以

 

总结:当上下级路径一致时,不会出现连续相同路径,第一个值会被消化掉,具体原因得看源码,暂未研究。

为了安全起见,上下级路径设置不同。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值