springboot参数注解

文章目录

          • [1. @PathVariable](#1. @PathVariable)
          • [2. @RequestParam](#2. @RequestParam)
          • [3. @RequestHeader](#3. @RequestHeader)
          • [4. @CookieValue](#4. @CookieValue)
          • [5. @RequestBody](#5. @RequestBody)
          • [6. @ModelAttribute](#6. @ModelAttribute)
          • [7. @RequestPart](#7. @RequestPart)
          • [8. @SessionAttributes](#8. @SessionAttributes)

在Spring Boot中,参数注解(Parameter Annotations)是Spring MVC和Spring WebFlux中用于处理HTTP请求参数的一种机制。这些注解允许你轻松地访问HTTP请求中的参数,包括路径变量、查询参数、请求头、请求体等。以下是一些常用的参数注解及其用途:

1. @PathVariable

用于将URL模板变量值绑定到控制器处理方法的参数上。通常与@RequestMapping注解一起使用,以从URL中提取参数值。

java 复制代码
@GetMapping("/users/{id}")  
public String getUserById(@PathVariable("id") Long userId) {  
    // ...  
}
2. @RequestParam

用于将请求参数绑定到你的控制器处理方法的参数上。如果请求中没有包含指定的参数,并且参数没有设置required=false,则抛出异常。

java 复制代码
@GetMapping("/greeting")  
public String greeting(@RequestParam(value = "name", defaultValue = "World") String name) {  
    // ...  
}
3. @RequestHeader

用于将请求头信息绑定到你的控制器处理方法的参数上。

java 复制代码
@GetMapping("/demo")  
public void handle(@RequestHeader("User-Agent") String userAgent) {  
    // ...  
}
4. @CookieValue

用于将Cookie值绑定到你的控制器处理方法的参数上。

java 复制代码
@GetMapping("/demo")  
public void showCookieValue(@CookieValue("JSESSIONID") String sessionId) {  
    // ...  
}
5. @RequestBody

用于将HTTP请求体绑定到控制器处理方法的参数上,通常用于处理POST或PUT请求。请求体中的数据需要被解析成某种格式(如JSON或XML),这通常通过配置消息转换器(Message Converters)来实现。

java 复制代码
@PostMapping("/users")  
public User createUser(@RequestBody User user) {  
    // ...  
}
6. @ModelAttribute

用于将请求参数绑定到JavaBean对象上。它不仅可以用于请求参数的绑定,还可以用于表单数据的绑定和重定向属性的传递。

java 复制代码
@PostMapping("/users")  
public String createUser(@ModelAttribute User user) {  
    // ...  
    return "redirect:/users/" + user.getId();  
}
7. @RequestPart

用于处理"multipart/form-data"请求中的文件上传。与@RequestBody不同,@RequestPart允许你处理多部分请求体中的数据,比如文件上传。

java 复制代码
@PostMapping("/upload")  
public String handleFileUpload(@RequestPart("file") MultipartFile file) {  
    // ...  
}
8. @SessionAttributes

虽然这不是一个参数注解,但它与参数传递相关。@SessionAttributes用于声明哪些模型属性的值应该被透明地存储到会话中,以便跨多个请求或会话访问。

java 复制代码
@Controller  
@SessionAttributes("user")  
public class UserController {  
    // ...  
}

注意事项

  1. 在使用这些注解时,确保你的方法参数类型与你想从HTTP请求中提取的数据类型相匹配。
  2. 默认情况下,大多数参数注解(如@RequestParam)是必需的,这意味着如果请求中缺少相应的参数,Spring MVC将抛出异常。你可以通过设置required=false来改变这一行为。
  3. @RequestBody和@RequestPart通常用于处理非表单数据(如JSON或文件上传),而@RequestParam、@ModelAttribute等则更适用于处理表单数据。
相关推荐
巫山老妖17 小时前
从零开发一个掘金自动发布 Skill,并上架 Clawhub
后端
颜酱17 小时前
图的数据结构:从「多叉树」到存储与遍历
javascript·后端·算法
雨中飘荡的记忆18 小时前
零拷贝技术深度解析
后端
uzong19 小时前
十年老员工的项目管理实战心得:有道有术
后端
Victor35620 小时前
MongoDB(31)索引对查询性能有何影响?
后端
Victor35620 小时前
MongoDB(30)如何删除索引?
后端
lizhongxuan20 小时前
多 Agent 协同机制对比
后端
IT_陈寒21 小时前
SpringBoot项目启动慢?5个技巧让你的应用秒级响应!
前端·人工智能·后端
树上有只程序猿21 小时前
2026低代码选型指南,主流低代码开发平台排名出炉
前端·后端
高端章鱼哥1 天前
为什么说用OpenClaw对打工人来说“不划算”
前端·后端