@RequestParam
是 Spring MVC 中用于处理 HTTP 请求参数的一个注解。它可以将请求参数绑定到控制器方法的参数上。以下是 @RequestParam
的详细用法和一些常见的使用场景:
基本用法
@RequestMapping(value = "/example", method = RequestMethod.GET)
public String exampleMethod(@RequestParam String name) {
// 处理逻辑
return "examplePage";
}
在这个例子中,@RequestParam
将 HTTP 请求中的 name
参数绑定到方法参数 name
上。例如,对于请求 /example?name=John
,方法参数 name
的值将是 "John"
。
指定参数名称
如果请求参数的名称与方法参数的名称不同,可以使用 value
属性来指定请求参数的名称:
@RequestMapping(value = "/example", method = RequestMethod.GET)
public String exampleMethod(@RequestParam(value = "user_name") String name) {
// 处理逻辑
return "examplePage";
}
在这个例子中,请求参数 user_name
将被绑定到方法参数 name
上。
设置默认值
可以使用 defaultValue
属性为请求参数设置默认值:
@RequestMapping(value = "/example", method = RequestMethod.GET)
public String exampleMethod(@RequestParam(defaultValue = "Guest") String name) {
// 处理逻辑
return "examplePage";
}
如果请求中没有提供 name
参数,方法参数 name
的值将是 "Guest"
。
可选参数
可以使用 required
属性来指定请求参数是否是必须的。默认情况下,required
为 true
,即请求参数是必须的。如果设置为 false
,则请求参数是可选的:
@RequestMapping(value = "/example", method = RequestMethod.GET)
public String exampleMethod(@RequestParam(required = false) String name) {
// 处理逻辑
return "examplePage";
}
在这个例子中,请求参数 name
是可选的。如果请求中没有提供 name
参数,方法参数 name
的值将是 null
。
处理多个值
如果请求参数可能有多个值,可以将方法参数声明为数组或集合类型:
@RequestMapping(value = "/example", method = RequestMethod.GET)
public String exampleMethod(@RequestParam List<String> names) {
// 处理逻辑
return "examplePage";
}
在这个例子中,请求参数 names
可以有多个值,例如 /example?names=John&names=Jane
,方法参数 names
将包含 ["John", "Jane"]
。
结合 @RequestMapping
使用
@RequestParam
通常与 @RequestMapping
一起使用,用于处理 HTTP 请求:
@Controller
public class ExampleController {
@RequestMapping(value = "/example", method = RequestMethod.GET)
public String exampleMethod(@RequestParam String name) {
// 处理逻辑
return "examplePage";
}
}
总结
@RequestParam
是一个非常强大的注解,用于将 HTTP 请求参数绑定到控制器方法的参数上。通过结合使用 value
、defaultValue
和 required
属性,可以灵活地处理各种请求参数的场景。