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等则更适用于处理表单数据。
相关推荐
开发者小天1 小时前
python中For Loop的用法
java·服务器·python
flushmeteor1 小时前
JDK源码-基础类-String
java·开发语言
毕设源码-钟学长2 小时前
【开题答辩全过程】以 基于ssm的空中停车场管理系统为例,包含答辩的问题和答案
java
不愿是过客2 小时前
java实战干货——长方法深递归
java
小北方城市网3 小时前
Redis 分布式锁高可用实现:从原理到生产级落地
java·前端·javascript·spring boot·redis·分布式·wpf
六义义4 小时前
java基础十二
java·数据结构·算法
毕设源码-钟学长5 小时前
【开题答辩全过程】以 基于SpringBoot的智能书城推荐系统的设计与实现为例,包含答辩的问题和答案
java·spring boot·后端
笨手笨脚の5 小时前
深入理解 Java 虚拟机-03 垃圾收集
java·jvm·垃圾回收·标记清除·标记复制·标记整理
莫问前路漫漫5 小时前
WinMerge v2.16.41 中文绿色版深度解析:文件对比与合并的全能工具
java·开发语言·python·jdk·ai编程
九皇叔叔5 小时前
【03】SpringBoot3 MybatisPlus BaseMapper 源码分析
java·开发语言·mybatis·mybatis plus