1. 使用@RequestParam注解接收参数
1.1 @RequestParam注解介绍
@RequestParam注解是SpringMVC和SpringBoot中常用的注解之一,用于接收HTTP请求的参数。通过该注解标记的参数,会根据请求中的参数名来匹配并赋值。
1.2 @RequestParam注解的使用方法
在Controller类的方法中,使用@RequestParam注解来接收参数。可以指定参数的名称、是否必需以及默认值。
@GetMapping("/user")
public String getUserInfo(@RequestParam("id") Long userId) {
// 根据userId查询用户信息并返回
}
上述代码中,使用@RequestParam("id")指定了请求参数的名称为"id",并将其赋值给userId变量。如果HTTP请求中没有"id"参数,则会报错。可以通过设置required属性来指定参数是否必须,默认为true。
如果请求时没有传递参数,可以通过设置defaultValue属性来指定默认值:
@GetMapping("/user")
public String getUserInfo(@RequestParam(value = "id", required = false, defaultValue = "0") Long userId) {
// 根据userId查询用户信息并返回,如果没有传递id参数,默认为0
}
2. 使用@PathVariable注解接收参数
2.1 @PathVariable注解介绍
@PathVariable注解也是SpringMVC和SpringBoot中常用的注解之一,用于接收URL路径中的参数。
2.2 @PathVariable注解的使用方法
在Controller类的方法中,使用@PathVariable注解来接收参数。可以指定参数的名称。
@GetMapping("/user/{id}")
public String getUserInfo(@PathVariable("id") Long userId) {
// 根据userId查询用户信息并返回
}
上述代码中,使用@PathVariable("id")指定了URL路径中的参数名称为"id",并将其赋值给userId变量。
3. 使用ServletRequest或HttpServletRequest接收参数
3.1 ServletRequest介绍
ServletRequest是Java Servlet规范定义的接口,用于封装HTTP请求的信息。在SpringMVC和SpringBoot中,可以直接使用ServletRequest或HttpServletRequest对象来接收参数。
3.2 ServletRequest的使用方法
在Controller类的方法中,可以通过直接在方法参数中声明ServletRequest或HttpServletRequest类型的参数来接收请求对象。
@GetMapping("/user")
public String getUserInfo(ServletRequest request) {
// 使用request.getParameter()方法来获取请求参数
String userId = request.getParameter("id");
// 根据userId查询用户信息并返回
}
上述代码中,通过调用request.getParameter("id")方法,可以获取到id参数的值。
4. 使用@RequestBody注解接收JSON参数
4.1 @RequestBody注解介绍
@RequestBody注解用于接收请求体中的参数,通常用于接收JSON格式的参数。
4.2 @RequestBody注解的使用方法
在Controller类的方法中,使用@RequestBody注解来接收参数。需要注意的是,接收的参数类型需要与请求体中的数据类型相匹配。
@PostMapping("/user")
public String createUser(@RequestBody UserDto userDto) {
// 根据userDto创建用户并返回
}
上述代码中,使用@RequestBody注解将请求体中的JSON参数自动绑定到UserDto对象上,然后可以根据这个对象创建用户并返回。
5. 总结
本文介绍了SpringMVC和SpringBoot中接收参数的几种常用方式,包括使用@RequestParam注解、@PathVariable注解、ServletRequest或HttpServletRequest对象以及@RequestBody注解。根据不同的需求和场景,可以选择合适的方式来接收参数,提高开发效率和代码的可读性。