详解 SpringMVC 中获取请求参数
在Spring MVC中,获取请求参数可以通过以下方式:
直接在控制器方法的参数中使用注解:
@RequestParam
:获取查询参数(Query parameter)或表单数据。@PathVariable
:获取URL中的路径变量(Path variable)。@RequestBody
:获取请求体中的数据,通常用于POST或PUT请求。@RequestHeader
:获取请求头(Request header)数据。@CookieValue
:获取Cookie值。
- 使用
HttpServletRequest
对象获取请求数据。 - 使用
@ModelAttribute
自动绑定表单数据到Java对象。
示例代码:
@Controller
@RequestMapping("/users")
public class UserController {
// 使用@RequestParam获取查询参数
@GetMapping
public String getUsers(@RequestParam(name = "id", required = false) Integer id, Model model) {
// 如果存在id参数,则根据id查询用户
if (id != null) {
// 假设有findUserById的方法
User user = userService.findUserById(id);
model.addAttribute("user", user);
}
// 不存在id参数,则查询所有用户
List<User> users = userService.findAllUsers();
model.addAttribute("users", users);
return "users";
}
// 使用@PathVariable获取URL中的路径变量
@GetMapping("/{userId}")
public String getUser(@PathVariable("userId") Integer userId, Model model) {
User user = userService.findUserById(userId);
model.addAttribute("user", user);
return "user";
}
// 使用@RequestBody获取请求体中的JSON数据
@PostMapping
public ResponseEntity<?> createUser(@RequestBody User user) {
User createdUser = userService.createUser(user);
return ResponseEntity.status(HttpStatus.CREATED).body(createdUser);
}
// 使用HttpServletRequest获取请求数据
@GetMapping("/current")
public void currentUser(HttpServletRequest request, HttpServletResponse response) {
// 获取请求参数
String queryParam = request.getParameter("param");
// 获取请求头
String authHeader = request.getHeader("Authorization");
// 获取Cookie
Cookie[] cookies = request.getCookies();
if (cookies != null) {
for (Cookie cookie : cookies) {
if ("sessionId".equals(cookie.getName())) {
String sessionId = cookie.getValue();
// ...
}
}
}
}
// 使用@ModelAttribute绑定表单数据到Java对象
@PostMapping("/register")
public String registerUser(@ModelAttribute UserForm userForm, BindingResult bindingResult, Model model) {
if (bindingResult.h
评论已关闭