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等则更适用于处理表单数据。
相关推荐
Victor35631 分钟前
MongoDB(24)如何对查询结果进行排序?
后端
怕浪猫1 小时前
第21章:微服务与分布式架构中的Go应用
后端·go·编程语言
武子康1 小时前
大数据-239 离线数仓 - 广告业务实战:Flume 导入日志到 HDFS,并完成 Hive ODS/DWD 分层加载
大数据·后端·apache hive
摸鱼的春哥2 小时前
Agent教程15:认识LangChain(中),状态机思维
前端·javascript·后端
Seven972 小时前
剑指offer-80、⼆叉树中和为某⼀值的路径(二)
java
风象南8 小时前
我把大脑开源给了AI
人工智能·后端
橙序员小站13 小时前
Agent Skill 是什么?一文讲透 Agent Skill 的设计与实现
前端·后端
怒放吧德德13 小时前
Netty 4.2 入门指南:从概念到第一个程序
java·后端·netty
雨中飘荡的记忆15 小时前
大流量下库存扣减的数据库瓶颈:Redis分片缓存解决方案
java·redis·后端
开心就好202516 小时前
UniApp开发应用多平台上架全流程:H5小程序iOS和Android
后端·ios