lidashent 2019-04-01 08:42 采纳率: 0%
浏览 649

javaee,out的clear()与clearBuffer()区别?

我实际测试了一下,
感觉clear()与clearBuffer()区别不大

我感觉到的原理是:两者都会清除在他们之前加载到缓冲区的内容,这意味着网页上不会看到这些内容
而且clear,clearBuffer检测到缓冲区为空的时候会抛出异常
(用out.flush()进行检测的)


<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
  <head>
    <title>problem test page</title>
  </head>
  <body>
            <p> 啦啦啦</p>
    <%
        StringBuffer str = new StringBuffer("呵呵");
        out.print(str);
                 //out.flush();
        //out.clear();
                //out.clearBuffer();
         if (response.isCommitted()){
            out.print("TRUE");
        }
        else {
            out.print("FALSE");
        }
    %>
  </body>
</html>

看定义是:clearBuffer()清除缓冲区数据,将数据写到客户端
clear()清除缓冲区数据, 不输出到客户端且刷新缓存时抛出异常
那么真正的区别是什么?clearBuffer定义的效果没有实现?

  • 写回答

2条回答 默认 最新

  • wu鑫 2019-04-01 09:15
    关注

    clear():用来清除输出缓冲区。这种方法不写任何内容到客户机。该方法抛出异常,如果缓冲被刷新。

    "这里是页面输出的内容"

    <%

    out.clear();

    %>

    这样页面不会有任何显示(输出内容被清除了),如果在clear()之前,加入flush(),则会抛出异常:

    java.io.IOException: Error: Attempt to clear a buffer that's already been flushed.

    clearBuffer():清除输出缓冲区。这种方法不写任何内容到客户机.

    "这里是页面输出的内容"

    <%

    out.clearBuffer();

    %>

    这样书写,页面不会有任何显示.如果在clearBuffer()之前加入flush().页面则会显示内容.

    作者:xymyqueen
    来源:CSDN
    原文:https://blog.csdn.net/xymyqueen/article/details/52083426

    评论
  • 毕小宝 博客专家认证 2019-04-01 16:12
    关注

    直接跟踪下源码研究一下何如?

    评论

报告相同问题?

悬赏问题

  • ¥15 oled显示有问题,初始化后应该啥也不显示,但却亮了一大片
  • ¥15 【通信原理】为什么传信率不变?频带利用率为啥没有二倍
  • ¥15 CANOPEN SDO
  • ¥15 r语言数据集循环获取问题
  • ¥30 求佬们帮助,总是出bug,求佬们解决一下bug
  • ¥15 后端Java转换字符串传给前端,前端如何解析呢?
  • ¥15 psychopy(python为基础的)中引入cmd
  • ¥15 不知道怎么去做关于前端电子请柬
  • ¥15 Ubuntu22.04打开是tty界面。提示OOM
  • ¥15 存储过程或函数中的结果集类型变量如何使用。