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等则更适用于处理表单数据。
相关推荐
百事老饼干3 分钟前
Java[面试题]-真实面试
java·开发语言·面试
customer0810 分钟前
【开源免费】基于SpringBoot+Vue.JS医院管理系统(JAVA毕业设计)
java·vue.js·spring boot·后端·spring cloud·开源·intellij-idea
2402_8575893620 分钟前
SpringBoot框架:作业管理技术新解
java·spring boot·后端
HBryce2424 分钟前
缓存-基础概念
java·缓存
一只爱打拳的程序猿39 分钟前
【Spring】更加简单的将对象存入Spring中并使用
java·后端·spring
杨荧40 分钟前
【JAVA毕业设计】基于Vue和SpringBoot的服装商城系统学科竞赛管理系统
java·开发语言·vue.js·spring boot·spring cloud·java-ee·kafka
minDuck42 分钟前
ruoyi-vue集成tianai-captcha验证码
java·前端·vue.js
为将者,自当识天晓地。1 小时前
c++多线程
java·开发语言
daqinzl1 小时前
java获取机器ip、mac
java·mac·ip