Spring MVC:@RequestMapping

在 Spring MVC 中,`@RequestMapping` 支持类级别和方法级别的组合。若类上配置了路径(如 `/hl`),方法上配置了子路径(如 `/func`),最终访问路径为两者的拼接。

关键点:

  1. 路径拼接规则:Spring 会自动处理斜杠。类路径 `/hl` 与方法路径 `/func` 拼接后为 `/hl/func`。即使方法路径写为 `func`(无前导斜杠)或 `/func`,结果通常一致,但建议统一使用前导斜杠以规范代码 。

  2. 唯一性约束:同一应用下,最终生成的完整 URL 路径必须唯一。如果存在另一个 Controller 的方法直接映射为 `/hl/func`,或者另一个类+方法组合也生成 `/hl/func`,启动时会报 `Ambiguous mapping` 异常 。

  3. 尾随斜杠差异:Spring Boot 3.x (Spring Framework 6) 默认不再忽略尾随斜杠。`/hl/func` 与 `/hl/func/` 被视为不同路径,需确保前端请求路径与后端定义严格匹配 。

代码示例:

import org.springframework.web.bind.annotation.GetMapping;

import org.springframework.web.bind.annotation.RequestMapping;

import org.springframework.web.bind.annotation.RestController;

@RestController

@RequestMapping("/hl") // 类级别基础路径

public class HlController {

@GetMapping("/func") // 方法级别子路径

public String func() {

return "Accessed /hl/func";

}

}

```

访问地址: `GET http://localhost:8080/hl/func\`

避坑指南:

  • 避免在类或方法路径中使用连续斜杠(如 `//hl`),Spring 会将其规范化为单斜杠,但可能导致歧义或不可访问 。

  • 若需同时支持 `/func` 和 `/hl/func`,不能通过同一个 Controller 的简单组合实现,需定义两个独立的方法或使用重定向,因为一个方法只能映射一组确定的路径模式 。

相关推荐
曹牧1 小时前
Spring MVC : Controller 层URL划分
java·运维·服务器·前端
卓怡学长2 小时前
w203基于springboot钢材仓库管理系统的设计与实现
java·spring boot·spring·intellij-idea
sunburn-2 小时前
Java 排序算法详细教学:从冒泡排序到快速排序
java·开发语言·数据结构·ide·算法
我是小白呀2 小时前
编排还是事件协作?用 AcmeFlow 讲清企业 Workflow 的控制权
java·开发语言
深入云栈2 小时前
Netty 4.2.x 源码深度解析 (十四):KQueue 传输 —— macOS 高性能 IO 的 Netty 实现
java·后端
信誓旦旦的程序猿2 小时前
【Python 量化取数指南 #13】Python 把行情落库:sqlite 一键存,回测随用随取
java·python·股票数据api·股票数据·股票数据api接口·股票api数据接口·股票量化数据api
她的男孩2 小时前
头像换了三次还是旧图:秒传 + 预签名 URL + 私有文件权限,四层缓存叠出一个 Bug
java·后端·架构
深入云栈2 小时前
Netty 4.2.x 源码深度解析 (十五):io_uring 传输 —— RingBuffer 与零拷贝 IO
java·后端
MacroZheng2 小时前
装上这款全能增强插件,DeepSeek Harness瞬间高大上了!
java·人工智能·后端