zoukankan      html  css  js  c++  java
  • 046_SSM——@ReposeBody标签其什么作用?为什么要和注解驱动一块使用?

    一般服务器向浏览器返回json字符串是,和普通的字符串返回的格式是不一样的。
    respose.setContentype("application/json;charset=utf-8")
    respose.setContentype("html/text;charset=utf-8")
    ===============================================================

    当返回值是对象时

    框架处理返回一个Student对象,使用的MappingJackson2HttpMessageConverter这个类。
    内部使用jackson的ObjectMapper,把student转为json。
    在使用@ResponseBody输出到浏览器。 默认的ContextType:"application/json;charset=UTF-8"
    ================================================================

    当返回值是字符串是,注意编码格式

    当返回值是String时,如果有@resposBody注解就是字符串,没有就是view视图路径。
    但是会有乱码的情况,因为这里面会使用消息解析器的 StringHttpMessageConverter,
    默认编码方式是iso-8859-1,我们需要在 @RequestMapping(produces = "text/plain;charset=utf-8")设置相应编码

    ==================================================================

    为什么要使用注解驱动?

    我们的@RTeposeBody注解只是负责将我们的json字符串响应到浏览器,但是注解就不一样了,

    注解驱动里面有一个消息转换器接口,他有七个实现类,是专门负责进行数据转换的,我们上面的MappingJackson2HttpMessageConverter

    与 StringHttpMessageConverter都是他的实现类。

    简单来说就是@ResposBody管理的是相应请求,但是注解驱动管理的就是消息转换。

    =================================================================

  • 相关阅读:
    《课后习题》
    《课后习题---求两点之间的距离》
    《day06---面向对象入门》
    《java作业》
    《选择排序》
    《冒泡排序》
    《java版进制转换》
    《c语言全局变量的用法》
    《递归问题_2》
    C#把动态创建的多个控件中指定控件显示在最上层
  • 原文地址:https://www.cnblogs.com/pogusanqian/p/12427146.html
Copyright © 2011-2022 走看看