@RequestParam注解

@RequestParam 注解

@RequestParam 是 Spring MVC 中用于绑定请求参数到方法参数的注解。它可以将 URL 中的查询参数或表单参数映射到控制器方法的参数中,并支持多种配置选项,如设置默认值和是否为必填参数。

主要功能

  1. 绑定请求参数:将 URL 中的查询参数或表单参数绑定到控制器方法的参数。
  2. 参数验证:指定参数是否为必填项以及默认值,确保请求中提供了必要的数据。
  3. 类型转换:自动将请求参数的字符串类型转换为方法参数的目标类型。

使用示例

基本用法
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class MyController {

    @GetMapping("/greeting")
    public String greeting(@RequestParam(name = "name", required = false, defaultValue = "World") String name) {
        return "Hello, " + name;
    }
}

在这个例子中:

  • @GetMapping("/greeting") 表示这个方法处理 /greeting 路径的 GET 请求。
  • @RequestParam(name = "name", required = false, defaultValue = "World") 将请求参数 name 绑定到方法参数 name 上。
    • name = "name" 指定请求参数的名称。
    • required = false 表示该参数不是必需的,如果未提供则不报错。
    • defaultValue = "World" 指定了默认值,当请求中没有提供该参数时使用默认值 “World”。
处理多个参数
@GetMapping("/add")
public int add(@RequestParam("a") int a, @RequestParam("b") int b) {
    return a + b;
}

在这个例子中:

  • @RequestParam("a")@RequestParam("b") 将请求参数 ab 的值绑定到方法参数 ab 上,并自动转换为整数类型。
处理列表参数

@RequestParam 也可以处理列表参数:

@GetMapping("/numbers")
public String getNumbers(@RequestParam List<Integer> numbers) {
    return "Numbers are: " + numbers;
}

请求 URL 如:/numbers?numbers=1&numbers=2&numbers=3 会将参数绑定到 List<Integer> numbers 中。

配置选项

  • name/value: 请求参数的名称。valuename 的别名,两个属性是等效的。
  • required: 指定该参数是否为必填项。默认为 true,表示必须在请求中提供。如果设置为 false,可以不提供该参数。
  • defaultValue: 当请求中没有提供该参数时使用的默认值。即使 required = true,只要设置了 defaultValue,该参数也不再是必填的。

常见错误处理

  • 如果 required = true 且请求中没有提供该参数,Spring 会抛出 MissingServletRequestParameterException
  • 如果提供的参数无法转换为目标类型(例如,字符串不能转换为数字),会抛出 TypeMismatchException

总结

@RequestParam 是 Spring MVC 中常用的注解,用于将 HTTP 请求的参数绑定到控制器方法的参数中。它支持默认值和必填检查等功能,使得处理请求参数更加方便和安全。在开发 RESTful API 或处理表单提交时,@RequestParam 提供了灵活的参数绑定方式,简化了请求处理逻辑。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值