首页 > 其他分享 >【Spring】SpringMVC中@RequestMapping 详解

【Spring】SpringMVC中@RequestMapping 详解

时间:2024-05-27 11:32:55浏览次数:24  
标签:RequestMapping users 映射 SpringMVC Spring public id 请求

1、简介

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

2、 基本用法

  • @RequestMapping 可以标注在方法或类上。
  • 当标注在类上时,它提供了初步的请求映射信息,如请求路径的前缀。
  • 当标注在方法上时,它提供了具体的请求映射信息。
  • 示例(getUser 方法映射到的URL路径为 /users/{id}。):
@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枚举来指定。
  • 示例:
@RequestMapping(value = "/users/{id}", method = RequestMethod.GET)  
public String getUserById(@PathVariable("id") Long id, Model model) {  
    // ...  
    return "userView";  
}
  • 或者使用快捷的HTTP方法注解(如@GetMapping、@PostMapping等):
@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请求。
@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);  
    }  
}

标签:RequestMapping,users,映射,SpringMVC,Spring,public,id,请求
From: https://blog.csdn.net/wosixiaokeai/article/details/139194431

相关文章

  • springboot宠物领养管理系统论文
    目录摘要IAbstractII第1章绪论31.1项目研究的背景31.2开发目的和意义31.3国内外研究现状4第2章系统开发工具52.1Java编程语言52.2B/S模式52.3MySQL数据库62.4后端框架介绍72.4.1SpringBoot介绍72.4.2Mybatis介绍72.4.3SpringMvc介......
  • Spring学习:如何创建并配置一个第三方Bean
    文章目录一、知识储备二、创建第三方Bean 一、知识储备使用XML配置application.xml<?xmlversion="1.0"encoding="UTF-8"?><beansxmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSche......
  • 【JAVA】Java如何使用Spring Boot进行Web服务开发
    文章目录前言一、函数解释二、代码实现三、总结前言在现代的微服务架构中,创建快速、可靠的Web服务已经成为一项基本技能。SpringBoot是一个出色的框架,它简化了Spring应用开发,使我们能够更快速地创建和部署Web服务。在这篇博客中,我们将探讨如何使用Java和SpringBoo......
  • SpringValidation
    一、概述:​JSR303中提出了BeanValidation,表示JavaBean的校验,HibernateValidation是其具体实现,并对其进行了一些扩展,添加了一些实用的自定义校验注解。​Spring中集成了这些内容,你可以在Spring中以原生的手段来使用校验功能,当然Spring也对其进行了一点简单的扩展,以便其更适......
  • Java项目-基于springboot+vue的旅游管理系统(源码+数据库+文档)​
    如需完整项目,请私信博主基于SpringBoot+Vue的旅游管理系统开发语言:Java数据库:MySQL技术:SpringBoot+MyBatis+Vue.js工具:IDEA/Ecilpse、Navicat、Maven随着科学技术的飞速发展,网络快速发展、人民生活的快节奏都在努力与现代的先进技术接轨,通过科技手段来提高自身的优势,旅游管......
  • Java项目-基于springboot+vue的简历系统(源码+数据库+文档)​
    如需完整项目,请私信博主基于SpringBoot+Vue的简历系统开发语言:Java数据库:MySQL技术:SpringBoot+MyBatis+Vue.js工具:IDEA/Ecilpse、Navicat、Maven随着科学技术的飞速发展,社会的方方面面、各行各业都在努力与现代的先进技术接轨,通过科技手段来提高自身的优势,简历系统当然也不......
  • Spring Cloud快速入门
    SpringCloud是一个基于SpringBoot的微服务框架,它提供了一系列的功能和工具,用于构建分布式系统和服务。以下是一个SpringCloud应用框架的快速入门指南:1.环境准备安装JavaJDK:确保你的计算机上安装了JavaDevelopmentKit(JDK)。安装Maven或Gradle:Maven和Gradle是Java......
  • Spring Cloud 面试题(五)
    1.Eureka的自我保护模式是什么?Eureka的自我保护模式是一种应对网络异常的安全保护措施,旨在防止因网络分区或其他异常情况导致服务实例被错误地注销。当EurekaServer在短时间内丢失过多的客户端心跳时,会触发自我保护机制。以下是自我保护模式的几个关键点[40][41][46]:触......
  • Spring Cloud 面试题(六)
    1.Nginx与Ribbon的区别Nginx与Ribbon都是负载均衡器,但它们在设计定位、工作方式以及使用场景上存在一些区别:定位与角色:Nginx是一个通用的反向代理服务器,主要作为服务端的负载均衡器和反向代理,位于客户端和后端服务器之间。它通常以独立的服务器程序运行,可以作为独立的......
  • Spring Cloud 面试题(四)
    1.什么是微服务架构?微服务架构是一种软件开发架构风格,它将应用程序作为一组小的服务构建,每个服务运行在其独立的进程中,并通常围绕业务功能进行组织。这些服务可以通过定义良好的轻量级机制(通常是HTTPRESTfulAPI)进行通信。每个服务是自包含的,意味着它拥有自己的业务逻辑......