【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);  
    }  
}
相关推荐
尘浮生1 分钟前
Java项目实战II基于微信小程序的电影院买票选座系统(开发文档+数据库+源码)
java·开发语言·数据库·微信小程序·小程序·maven·intellij-idea
郑祎亦25 分钟前
Spring Boot 项目 myblog 整理
spring boot·后端·java-ee·maven·mybatis
不是二师兄的八戒25 分钟前
本地 PHP 和 Java 开发环境 Docker 化与配置开机自启
java·docker·php
爱编程的小生37 分钟前
Easyexcel(2-文件读取)
java·excel
本当迷ya38 分钟前
💖2025年不会Stream流被同事排挤了┭┮﹏┭┮(强烈建议实操)
后端·程序员
带多刺的玫瑰1 小时前
Leecode刷题C语言之统计不是特殊数字的数字数量
java·c语言·算法
计算机毕设指导62 小时前
基于 SpringBoot 的作业管理系统【附源码】
java·vue.js·spring boot·后端·mysql·spring·intellij-idea
Gu Gu Study2 小时前
枚举与lambda表达式,枚举实现单例模式为什么是安全的,lambda表达式与函数式接口的小九九~
java·开发语言
Chris _data2 小时前
二叉树oj题解析
java·数据结构
牙牙7052 小时前
Centos7安装Jenkins脚本一键部署
java·servlet·jenkins