如何将SpringMVC HTTP消息转换器与文件上传下载及异常处理集成优化?

摘要:HttpMessageConverter(HTTP消息转换器) HTTP消息转换器主要是将请求的表单数据封装成对象,controller中的方法直接用对象接收数据。 HttpMessageConverter接口可以将请求协议转换为Java对
HttpMessageConverter(HTTP消息转换器) HTTP消息转换器主要是将请求的表单数据封装成对象,controller中的方法直接用对象接收数据。 HttpMessageConverter接口可以将请求协议转换为Java对象,也可以把Java对象转换为响应协议。 对于程序员来说,springmvc已经帮我们写好了,我们只需要在不同的业务场景下,选择合适的HTTP消息转换器即可。 我们可以使用不同的注解来启用不同的消息转换器。 @ResponseBody 这里使用的消息转换器是:StringHttpMessageConverter @GetMapping("/ajax") // @ResponseBody注解表示该方法的返回值直接作为字符串响应体返回,而不是视图名称 @ResponseBody public String ajax() { return "hello ajax"; } 直接返回Java对象,(这里使用的消息转换器是MappingJackson2HttpMessageConverter): @GetMapping("/ajax2") // @ResponseBody注解表示该方法的返回值直接作为响应体返回,而不是视图名称 @ResponseBody public User ajax2() { return new User("zhangsan", 20, "123456"); } 此时要加入jackson-databind依赖才能生效 <!-- 负责将Java对象转换为JSON格式,或者将JSON格式的数据转换为Java对象。 它提供了丰富的功能和灵活的配置选项,使得在Java应用程序中处理JSON数据变得非常方便。--> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>2.20.2</version> </dependency> </dependencies> @RestController 标注在类上,等于@Controller+@ResponseBody @RequestBody 作用是直接将请求体传递给Java程序,程序中可以直接使用一个String类型的变量来接收。 此注解只能出现在方法的参数上。 使用的消息转换器是FormHttpMessageConverter @PostMapping("/ajax3") public String ajax3(@RequestBody String params) { System.out.println(params); return "hello ajax3"; } 如果前端请求体当中提交的数据是JSON格式,那么@RequestBody可以将提交的json格式的字符串转换成Java对象。同样需要使用jackson的依赖 @PostMapping("/ajax4") @ResponseBody public String ajax4(@RequestBody User user) { System.out.println(user); return "hello ajax4"; } RequestEntity类 RequestEntity类的实例封装了整个请求的协议:包括请求行、请求头、请求体的所有信息。
阅读全文