@ResponseBody注解作用和原理

  

,,,,@ResponseBody这个注解通常使用在控制层(控制器)的方法上,其作用是将方法的返回值以特定的格式写入到身体反应的区域,进而将数据返回给客户端。当方法上面没有写ResponseBody,底层会将方法的返回值封装为ModelAndView对象。   
  
,,,,,,假如是字符串则直接将字符串写到客户端,假如是一个对象,此时会将对象转化为json串然后写到客户端。这里需要注意的是,如果返回对象,按utf - 8编码。如果返回字符串,默认按iso8859-1编码,页面可能出现乱码。因此在注解中我们可以手动修改编码格式,例如@RequestMapping (value=https://www.yisu.com/zixun//猫/查询”,产生=text/html; charset=utf - 8),前面是请求的路径,后面是编码格式。   
  
,,,,,,那么,控制层方法的返回值是如何转化为json格式的字符串的呢?其实是通过HttpMessageConverter中的方法实现的,因为它是一个接口,因此由其实现类完成转换。如果是bean对象,会调用对象的getXXX()方法获取属性值并且以键值对的形式进行封装,进而转化为json串。如果是映射集合,采用得到(关键)方式获取价值值,然后进行封装。   
  

@ResponseBody注解作用和原理