• 063_浏览器与服务器之间的json数据使用字节流传输的,还是使用字符流传输的?


    我们使用SpringMVC给浏览器返回数据的时候,会返回String,Object

    但是这些都需要配置@ReposBody注解,这个注解的作用就是将返回的数据写入到相应流中。

    我们之前再servlet中使用的是

    PrintWrite pw = respose.getWrite();

    pw.print(***);//将对象、文本转换成字节流输出。

    pw.write(***);//只能传输字符型的文本文件、字符串、字符数组、json字符串。

    由于我们的返回的对象会被消息转换器转换成json字符串,所以SpringMVC底层使用应该是pw.write(),但我并不是很确定

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

    一、response.getWriter().write()/response.getWriter().print()的区别
    response.getWriter()返回的是PrintWriter,这是一个打印输出流,属于JspWrite类

    print()
    可以将各种类型(包括Object)的数据通过默认编码转换成bytes字节形式,这些字节都通过write(int c)方法被输出
    response.getWriter().print(),不仅可以打印输出文本格式的(包括html标签),还可以将一个对象以默认的编码方式转换为二进制字节输出

    writer()
    仅支持输出字符类型数据,字符、字符数组、字符串等
    response.getWriter().writer(),只能打印输出文本格式的(包括html标签),不可以打印对象

    二、response.getWriter()获得的PrintWriter对象和out对象的区别
    (1)、out和response.getWriter的类不一样,一个是JspWriter,另一个是java.io.PrintWriter。

    (2)、执行原理不同:

    JspWriter相当于一个带缓存功能的printWriter,它不是直接将数据输出到页面,而是将数据刷新到response的缓冲区后再输出response.getWriter直接输出数据(response.print()),所以(out.print)只能在其后输出。

    (3)、out为jsp的内置对象,刷新jsp页面,自动初始化获得out对象,所以使用out对象是需要刷新页面的
    而response.getWriter()响应信息直接输出到网页上,当响应结束时它自动被关闭,与jsp页面无关,无需刷新页面
    形象的比喻:当我们调用response.getWriter()这个对象同时获得了网页的画笔,这时你就可以通过这个画笔在网页上画任何你想要显示的东西。

    (4)、out的print()方法和println()方法在缓冲区溢出并且没有自动刷新时候会产生ioexception,
    而response.getWrite()方法的print和println中都是抑制ioexception异常的,不会有ioexception
    out.println(""); 方法并不能也页面布局换行,只能领html代码换行,要实现页面布局换行可以:out.println("");
    ————————————————
    版权声明:本文为CSDN博主「最小城」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/weixin_42173191/article/details/93378800

  • 相关阅读:
    LeetCode 222. Count Complete Tree Nodes
    k8s控制节点etcd删除并重新加入
    k8s证书延长时间(二)
    二进制安装多master节点的k8s集群(2)
    kubeadm安装多master节点的k8s集群(1)
    OutOfMemoryError异常总结
    使用线程
    操作系统基础
    java 代码执行顺序
    jvm的内存模型
  • 原文地址:https://www.cnblogs.com/pogusanqian/p/12483651.html
Copyright © 2020-2023  润新知