【Spring】SpringMVC中@RequestMapping 详解

1、简介

在Spring MVC中,@RequestMapping 是一个非常重要的注解,它用于映射web请求(如HTTP请求)到特定的处理器方法或处理器类。

2、 基本用法

  • @RequestMapping 可以标注在方法或类上。
  • 当标注在类上时,它提供了初步的请求映射信息,如请求路径的前缀。
  • 当标注在方法上时,它提供了具体的请求映射信息。
  • 示例(getUser 方法映射到的URL路径为 /users/{id}。):
java 复制代码
@Controller  
@RequestMapping("/users")  
public class UserController {  
  
    @RequestMapping("/{id}")  
    public String getUser(@PathVariable("id") Long id, Model model) {  
        // ...  
        return "userView";  
    }  
}

3、 请求方法

  • @RequestMapping 允许指定HTTP请求方法(如GET、POST、PUT、DELETE等)。
  • 可以使用method属性或RequestMethod枚举来指定。
  • 示例:
java 复制代码
@RequestMapping(value = "/users/{id}", method = RequestMethod.GET)  
public String getUserById(@PathVariable("id") Long id, Model model) {  
    // ...  
    return "userView";  
}
  • 或者使用快捷的HTTP方法注解(如@GetMapping、@PostMapping等):
java 复制代码
@GetMapping("/users/{id}")  
public String getUserById(@PathVariable("id") Long id, Model model) {  
    // ...  
    return "userView";  
}

4、参数

@RequestMapping 有几个主要的参数:

  • value:用于指定请求URL的映射值。
  • method:用于指定请求方法,如GET、POST等。
  • params:用于指定请求参数的条件。例如,params="myParam=myValue" 只会匹配那些包含参数myParam且其值为myValue的请求。
  • headers:用于指定请求头的条件。
  • consumes:指定处理请求的MIME类型(如application/json)。
  • produces:指定响应的MIME类型。

5、 通配符

在value属性中,你可以使用通配符来匹配URL路径。例如:

  • ?:匹配一个字符。
  • *:匹配零个或多个字符。
  • **:匹配零个或多个目录。

6、路径变量

  • 使用{variableName}的形式可以在URL路径中定义变量,这些变量可以通过@PathVariable注解在方法参数中捕获。

7、组合注解

  • Spring MVC提供了多个组合注解,如@GetMapping、@PostMapping、@PutMapping、@DeleteMapping、@PatchMapping等,它们都是@RequestMapping的特化版本,用于更简洁地表示特定HTTP方法的映射。

8、示例

  • 以下示例中getUserById 方法映射到 /api/v1/users/{id} 的GET请求,而createUser 方法映射到 /api/v1/users 的POST请求。
java 复制代码
@RestController  
@RequestMapping("/api/v1")  
public class MyRestController {  
  
    @GetMapping("/users/{id}")  
    public User getUserById(@PathVariable Long id) {  
        // ...  
        return user;  
    }  
  
    @PostMapping("/users")  
    public ResponseEntity<User> createUser(@RequestBody User user) {  
        // ...  
        return ResponseEntity.created(URI.create("/api/v1/users/" + user.getId())).body(user);  
    }  
}
相关推荐
鲸采云SRM采购管理系统1 小时前
采购管理系统哪家好?2026最新测评对比
java·服务器·数据库
IT_陈寒1 小时前
Python的GIL让我多写了500行代码
前端·人工智能·后端
0x532 小时前
Java网络编程(二)
java·服务器·网络
Flittly2 小时前
【雕虫大技】Agent 动态 Skill 供应链安全加固(三):输出校验与治理闭环实战
java·spring boot·spring
Poo_Chai2 小时前
QT emit信号后完整处理流程,包括槽函数响应流程
java·开发语言·数据库
IT爱学堂2 小时前
精讲软件设计师(软考中级)一站式通关课_实战课程_慕课网
后端
瑞码空间2 小时前
Java 图形界面(GUI)完整知识点手册
java·开发语言·图形界面·swing
树码小子2 小时前
开启 IDEA 中的断言功能
android·java·intellij-idea
战天战地站房顶2 小时前
在 Windows Docker 中部署 PostgreSQL 17 + pgvector 完整指南
后端
卷无止境3 小时前
FastAPI Guard 全解析,从概念到工程落地的实战指南
后端·python