【SpringMVC】Controller的多种方式接收请求参数
在Spring MVC中,控制器方法可以通过多种方式接收请求参数。以下是最常见的参数传递方法:
路径变量(Path Variables):
使用@PathVariable注解从URL路径中获取参数。
示例:对于URL /dishes/{id}:
@GetMapping("/dishes/{id}")
public ResponseEntity<Result> getById(@PathVariable Long id) {
// 业务逻辑
}
查询参数(Query Parameters):
使用@RequestParam注解处理查询字符串中的参数。
示例:对于URL /dishes?name=salad:
@GetMapping("/dishes")
public ResponseEntity<Result> getByName(@RequestParam String name) {
// 业务逻辑
}
请求体(Request Body):
使用@RequestBody注解将请求体中的JSON数据转换为Java对象。
示例:
@PostMapping("/dishes")
public ResponseEntity<Result> save(@RequestBody DishDTO dishDTO) {
// 业务逻辑
}
请求头(Request Headers):
使用@RequestHeader注解获取请求头中的数据。
示例:
@GetMapping("/dishes")
public ResponseEntity<Result> getDishes(@RequestHeader("Authorization") String authToken) {
// 业务逻辑
}
Cookie值:
使用@CookieValue注解从请求的Cookie中获取特定值。
示例:
@GetMapping("/dishes")
public ResponseEntity<Result> getDishes(@CookieValue("sessionId") String sessionId) {
// 业务逻辑
}
表单参数(Form Parameters):
类似于处理查询参数,使用@RequestParam来处理表单提交的数据。常用于application/x-www-form-urlencoded编码。
示例:
@PostMapping("/dishes")
public ResponseEntity<Result> handleForm(@RequestParam String name, @RequestParam String description) {
// 业务逻辑
}
Model Attribute:
使用@ModelAttribute可以将请求参数绑定到一个Java对象,通常用于表单数据的绑定和数据预填充。
示例:
@PostMapping("/dishes")
public ResponseEntity<Result> createDish(@ModelAttribute DishDTO dishDTO) {
// 业务逻辑
}
Session Attributes:
使用@SessionAttribute注解从HTTPSession获取数据。
示例:
@GetMapping("/dishes")
public ResponseEntity<Result> getFromSession(@SessionAttribute("user") User user) {
// 业务逻辑
}
补充
文件上传
@PostMapping("/upload")
public Result<String> upload(MultipartFile file){
}
在Spring MVC中,处理文件上传时,确实可以不显式地使用@RequestParam注解来绑定MultipartFile参数,只要参数名称与表单上传的字段名称一致。Spring会自动匹配表单字段名称与控制器方法参数名称。
@PostMapping("/upload")
public ResponseEntity<String> upload(@RequestParam("file") MultipartFile file) {
}