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等则更适用于处理表单数据。
相关推荐
Rust研习社7 小时前
组合真的优于继承吗?为什么 Rust 和 Go 都拥抱组合舍弃继承?
后端·rust·编程语言
IT_陈寒7 小时前
JavaScript的闭包把我坑惨了,说好的内存会自动回收呢?
前端·人工智能·后端
CaffeinePro8 小时前
Pydantic深度使用:数据校验、枚举、ORM映射
后端·fastapi
Chenyiax8 小时前
从 Chat 到 Responses:OpenAI API 抽象为什么变了?
后端
MariaH8 小时前
Koa和Express的区别
后端
MariaH8 小时前
Koa框架的使用
后端
luckdewei9 小时前
那个用 passlib 做认证的新同事,上线第一天就把用户密码写进了日志
后端
ping某11 小时前
为什么 Nginx 明明监听了 80,转发后端时却用了 4xxxx 端口?
后端·nginx
JustHappy11 小时前
我汇总了身边朋友的经历才发现,其实第一份实习是最难找的......
前端·后端·面试
uhakadotcom11 小时前
在python 的 工程化架构中 ,什么是 薄包装器层?
后端·面试·github