一文盘点Spring MVC中用于处理HTTP请求的常用注解

 更新时间:2026年03月11日 08:50:34   作者:Lyyaoo.  
这篇文章主要为大家详细介绍了Spring MVC中用于处理HTTP请求的常用注解,包括@RequestMapping,@RequestController,@RequestParam等,希望对大家有所帮助

1.@RequestMapping

 @RequestMapping⽤来注册接⼝的路由映射,可以作用在类上,也可以作用在方法上,当标识⼀个类,设置映射请求的请求路径的初始信息,当标识⼀个⽅法,设置映射请求请求路径的具体信息。下面的代码表⽰服务收到请求时, 路径为 /hello 的请求就会调⽤ hello 这个⽅法的代码.

@RestController
public class UserController {
// 路由器规则注册
@RequestMapping("/hello")
	public String hello(){
		return "hello,Spring boot";
	}
}

 @RequestMapping ⽀持 get 请求和 post 请求 ,可以通过 method 进行指定,

@RestController
public class UserController {
// 路由器规则注册
@RequestMapping(value = "/hello",method= RequestMethod.POST)
	public String hello(){
		return "hello,Spring boot";
	}
}

2.@RequestController

 @RequestController是 Spring 中用来标记控制器类的注解,标注的类下的所有方法返回的数据直接写入HTTP响应体中,如下例子当浏览器访问 /hello 时,页面直接显示字符串Hello World,当访问 /user 时,Spring 会自动把 User 对象转换成 JSON 返回{“name”:“张三”,“age”:25}

@RestController
public class TestController {

    @RequestMapping("/hello")
    public String hello() {
        return "Hello World";
    }

    @RequestMapping("/user")
    public User getUser() {
        User user = new User("张三", 25);
        return user;  // 返回一个 Java 对象
    }
}

3.@RequestParam

 有时候,前端传递的参数 key 和我们后端接收的 key 可以不⼀致,⽐如前端传递了⼀个 time 给后端,⽽后端是使⽤ createtime 字段来接收的。此时可以通过@RequestParam来重命名前后端的参数值。

 例如,前端发来请求 GET /user?id=123,此时会从请求中找名为 id 的参数,把值赋给后面的 int userId 参数。

@RestController
public class UserController {
    @RequestMapping("/user")
    public String getUser(@RequestParam("id") int userId) {
        return "用户ID是:" + userId;
    }
}

使⽤ @RequestParam 进⾏参数重命名时, 参数就变成了必传参数,可以通过设置 @RequestParam 中的 required=false 来设置成非必传

@RequestParam(value = "name", required = false) String userName

 @RequestParam可以用来传递集合,默认情况下,请求中参数名相同的多个值,是封装到数组. 如果要封装到集合,要使⽤@RequestParam 绑定参数关系。

@RequestMapping("/test")
public String method6(@RequestParam List<String> listParam){
	return "size:"+listParam.size() + ",listParam:"+listParam;
}

4.@RequestBody

 @RequestBody是将 HTTP 请求体(Body)中的数据绑定到控制器方法参数的注解,当前端通过 POST、PUT 等请求发送一段 JSON(或 XML)数据时,@RequestBody 能帮你把这段数据自动转换成一个 Java 对象,方便后续的使用

{
    "name": "张三",
    "age": 25
}
@PostMapping("/user")
public String createUser(@RequestBody User user) {
    System.out.println(user.getName()); // 输出 "张三"
    return "success";
}

5.@PathVariable

 @PathVariable用来获取 URL 路径中的变量值的注解,例如使用浏览器发送请求 http://127.0.0.1:8080/param/m8/5/zhangsan,最终获取到 id 为 5 ,userName 为 zhangsan

@RequestMapping("/m8/{id}/{name}")
public String method8(@PathVariable Integer id, @PathVariable("name") String 
userName){
	return "解析参数id:"+id+",name:"+userName;
}

 同样可以进行重命名操作,下面的例子表示获取 @GetMapping(“/users/{id}”) 中 id 的值

@RestController
public class UserController {
    @GetMapping("/users/{id}")
    public String getUser(@PathVariable("id") int userId) {
        return "用户ID:" + userId;
    }
}

6.@RequestPart

 @RequestPart 用于处理 multipart/form-data 请求的注解。它可以把 multipart 请求中的某个特定部分(part)绑定到控制器方法的参数上,通常用于文件上传

@RequestMapping("/m9")
public String getfile(@RequestPart("file") MultipartFile file) throws IOException {
	//获取⽂件名称
	String fileName = file.getOriginalFilename();
	//⽂件上传到指定路径
	file.transferTo(new File("D:/temp/" + file.getOriginalFilename()));
	return "接收到⽂件名称为: "+fileName;
}

7.@CookieValue

 @CookieValue把请求中某个 Cookie 的值直接绑定到控制器方法的参数上,下面的例子能够指定获取 Cookie 中键为 bite 的字段值

@RequestMapping("/getCookie")
public String cookie(@CookieValue("bite") String bite) {
	return "bite:" + bite;
}

8.@SessionAttribute

 @SessionAttribute能从当前 HTTP Session 中获取某个属性的值,绑定到方法参数上,下面的例子就是从Session中获取属性名为 "username"的一系列属性,比如{id=1001, username=“zhangsan”}

@RequestMapping("/getSess2")
public String sess2(@SessionAttribute(value = "username",required = false)
User username) {
	return "username:"+user.getUsername();
}
@RequestMapping("/getSess2")
public String sess2(@SessionAttribute(value = "username",required = false)
String username) {
	return "username:"+ username;
}

到此这篇关于一文盘点Spring MVC中用于处理HTTP请求的常用注解的文章就介绍到这了,更多相关Spring MVC处理HTTP请求内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • idea自定义TODO和快捷键设置方式

    idea自定义TODO和快捷键设置方式

    文章主要介绍了在setting中设置TODO Patterns和Filters以实现自定义TODO的快捷输入,并详细说明了设置LiveTemplates以使自定义TODO与默认TODO一致的过程
    2026-05-05
  • springboot 使用ThreadLocal的实例代码

    springboot 使用ThreadLocal的实例代码

    这篇文章主要介绍了springboot 使用ThreadLocal的实例代码,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-12-12
  • 使用Java解决数组旋转问题的方法详解

    使用Java解决数组旋转问题的方法详解

    给定一个包含n个整数的数组,要求将数组中的元素向前移动m个位置,即数组的前n-m个元素顺序向后移动m个位置,最后m个元素移动到数组的最前面,本文给大家介绍了如何使用Java解决数组旋转问题,需要的朋友可以参考下
    2026-03-03
  • 详解Spring Boot工程集成全局唯一ID生成器 UidGenerator的操作步骤

    详解Spring Boot工程集成全局唯一ID生成器 UidGenerator的操作步骤

    本文就在项目中来集成 UidGenerator这一工程来作为项目的全局唯一 ID生成器。接下来通过实例代码给大家详解详解Spring Boot工程集成全局唯一ID生成器 UidGenerator的操作步骤,感兴趣的朋友一起看看吧
    2018-10-10
  • springmvc使用REST出现:Request method 'PUT' not supported问题

    springmvc使用REST出现:Request method 'PUT' not sup

    这篇文章主要介绍了springmvc使用REST出现:Request method 'PUT' not supported问题及解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-02-02
  • Spring声明式事务@Transactional注解实现元数据驱动的事务管理

    Spring声明式事务@Transactional注解实现元数据驱动的事务管理

    这篇文章主要为大家介绍了Spring声明式事务@Transactional注解实现元数据驱动的事务管理示例解析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-10-10
  • SpringCloud Gateway读取Request Body方式

    SpringCloud Gateway读取Request Body方式

    这篇文章主要介绍了SpringCloud Gateway读取Request Body方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-03-03
  • Java中的使用及连接Redis数据库(附源码)

    Java中的使用及连接Redis数据库(附源码)

    这篇文章主要介绍了Java中的使用及连接Redis数据库(附源码),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-09-09
  • SpringBoot Actuator未授权访问漏洞的排查和解决方法

    SpringBoot Actuator未授权访问漏洞的排查和解决方法

    Spring Boot Actuator 是开发和管理生产级 Spring Boot 应用程序的重要工具,它可以帮助你确保应用程序的稳定性和性能,本文给大家介绍了SpringBoot Actuator未授权访问漏洞的排查和解决方法,需要的朋友可以参考下
    2024-05-05
  • 教你如何更改IDEA项目的路径

    教你如何更改IDEA项目的路径

    这篇文章主要介绍了教你如何更改IDEA项目的路径,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-01-01

最新评论