Spring MVC学习笔记(三)

本文深入探讨了Spring框架中@RequestBody和@ResponseBody注解的使用方法及应用场景,包括如何通过这些注解处理HTTP请求体和响应体,并介绍了如何利用HttpMessageConverter进行数据转换。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

使用@RequestBody注解映射request body

方法参数注解@RequestBody表明方法参数将被绑定到HTTP请求体中。例如

@RequestMapping(value="/something", method=RequestMethod.PUT)
public void handle(@RequestBody String body, Writer writer) throws IOException{
  writer.write(body);
}

使用HttpMessageConverter将请求体转换为方法参数。HttpMessageConverter负责将HTTP请求信息转换成对象,将对象转换成HTTP响应体。RequestMappingHandlerAdapter使用默认的HttpMessageConverters支持@RequestBody注解。

ByteArrayHttpMessageConverter转换字节数组。
StringHttpMessageConverter转换字符串。
FormHttpMessageConverter转换表单数据。
SourceHttpMessageConverter转换javax.xml.transform.Source。

一个@RequestBody方法参数可以使用@Valid注解,这样将使用已配置的Validator实体校验。
类似于使用@ModelAttribute参数,Errors argument可以被用作检查错误。如果argument没有声明,将会产生MethodArgumentNotValidException。该异常由DefaultHandlerExceptionResolver处理,返回客户端404错误。

使用@ResponseBody注解映射响应体
@ResponseBody注解类似于@RequestBody。该注解表示方法的返回类型是直接写到HTTP响应体中。示例

@RequestMapping(value="/something", method=RequestMethod.PUT)
@ResponseBody
public String helloWorld(){
  retrun "Hello World";

以上示例中结果文本Hello World将直接写到响应流中。
对于@RequestNody,Spring使用HttpMessageConverter将返回对象转换到响应体中。

转载于:https://my.oschina.net/yaoliyc/blog/211816

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值