【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) {
}

你可能感兴趣的:(Java,SpringMVC,spring,mvc,springMVC)