原文地址:https://docs.spring.io/spring-framework/docs/current/reference/html/web.html#spring-web
1.1.11. Multipart Resolver
来自org.springframework.web.multipart包的MultipartResolver是一种用于解析包括文件上传在内的多部分请求的策略。有一种是基于Commons FileUpload的实现,另一种是基于Servlet 3.0多部分请求解析的实现。
要启用 multipart 处理,您需要在DispatcherServletSpring配置中声明一个名为multipartResolver的MultipartResolverbean。DispatcherServlet检测到它并将其应用到传入请求。 当接收到 content-type 为multipart/form-data的 POST 时,解析器解析内容并将当前HttpServletRequest包装为MultipartHttpServletRequest,以提供对解析部分的访问,此外还将它们作为请求参数公开。
要使用 Apache CommonsFileUpload,可以配置CommonsMultipartResolver类型的bean,名称为CommonsMultipartResolver。您还需要将commons-fileupload作为 classpath 的依赖项。
1.3.2. Request Mapping
您可以使用@RequestMapping注解将请求映射到控制器方法。它有各种属性来匹配URL、HTTP方法、请求参数、头和媒体类型。您可以在类级别使用它来表示共享映射,也可以在方法级别使用它来缩小到特定的端点映射。
也有HTTP方法特有的快捷方式@RequestMapping:
@GetMapping
@PostMapping
@PutMapping
@DeleteMapping
@PatchMapping
快捷方式是定制注解,因为与使用@RequestMapping相比,大多数控制器方法都应该映射到特定的HTTP方法,而@RequestMapping在默认情况下与所有HTTP方法匹配。同时,在类级别上仍然需要@RequestMapping来表示共享映射。
下面的示例具有类型级和方法级映射:
Java
Kotlin
@RestController@RequestMapping("/persons")classPersonController{@GetMapping("/{id}")publicPersongetPerson(@PathVariableLong id){// ...}@PostMapping@ResponseStatus(HttpStatus.CREATED)publicvoidadd(@RequestBodyPerson person){// ...}}