【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);  
    }  
}
相关推荐
tedcloud1239 分钟前
OpenLogi 怎么搭建?用 Rust 打造一个轻量的 Logitech 外设管理工具
linux·运维·服务器·开发语言·后端·rust·开源
霸道流氓气质21 分钟前
Spring AI 技术细节:VectorStore 多库统一抽象
java·人工智能·spring
今天AI了吗22 分钟前
Codex 配置自定义 AI API 完整指南:从零到一接入你的专属模型
java·人工智能·python·数据分析·embedding
学长毕业设计42 分钟前
基于SpringBoot的健康食谱管理系统的设计与实现(源码+文档+讲解视频)
java·spring boot·后端
珍珠先生43 分钟前
P10 · 缺 MySQL 驱动 jar:ClassNotFoundException: com.mysql.cj.jdbc.Driver
java
pnoker1 小时前
从工业软件到 AI 智能体:工业 AIoT 技术路线的系统梳理
java·人工智能·物联网·microsoft·开源·工业互联网
专注仿真1 小时前
Vapor框架构建及Swift for TensorFlow图像分析
java·其他
逃逸线LOF1 小时前
Spring的AOP简介
java·后端·spring
砚底藏山河1 小时前
【量化纯GET实战 #21】用 pandas 做分析:把接口数据变成 DataFrame
java·python·金融·maven·pandas
Zzzzmo_2 小时前
Spring MVC
java·spring·mvc·cookie/session