美文网首页
JSP内置对象out.clear(),flush(),clear

JSP内置对象out.clear(),flush(),clear

作者: 汽水味丶嗝 | 来源:发表于2018-06-13 21:45 被阅读0次

out对象中的clear(),flush(),clearBuffer()都是清楚缓存用的。详细比较一下,错误及遗漏的请多指正。
缓冲区用来缓存即将输出到页面的数据。
这三种方法也同时作用于print()缓冲区,所以和html页面输出一同作为参考。验证使用request对象的isCommit()方法判断服务端是否把缓冲区数据传送到客户端。


out.clear()是直接清空缓冲区数据,不输出到客户端且刷新缓存时抛出异常

<%--
  Created by IntelliJ IDEA.
  User: Iverson3
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
  <head>
    <title>problem test page</title>
  </head>
  <body>
            <p> HELLO</p>
    <%
        StringBuffer str = new StringBuffer("hello");
        out.print(str);
        out.clear();
         if (response.isCommitted()){
            out.print("TRUE");
        }
        else {
            out.print("FALSE");
        }
    %>
  </body>
</html>

输出截图:


TIM截图1.png

可以看到原本应该输出的HELLO没有输出,title标签中的标题也没了。
我们再将out.clear()与out.print(str)调换顺序,此时可以输出hello。
isCommit()输出false。


out.flush()先输出缓冲区数据再清空。

<%--
  Created by IntelliJ IDEA.
  User: Iverson3
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java"%>
<html>
<head>
    <title>我是Title</title>
</head>
<body>
    <p>HELLO</p>
    <%
        out.print("0这行?");
        out.flush();
        out.print("1这行有吗????");
         if (response.isCommitted()){
            out.print("TRUE");
        }
        else {
            out.print("FALSE");
        }
    %>

</body>
</html>

输出截图:


图2.png

可以看到输出都有,isCommit返回true.

out.clearBuffer() 清空缓冲区,不输出到客户端

<%--
  Created by IntelliJ IDEA.
  User: Iverson3
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>我是Title</title>
</head>
<body>
    <p>HELLO</p>
    <%
        out.print("0这行?");
        out.clearBuffer();
        out.print("1这行有吗????");
        if (response.isCommitted()){
            out.print("TRUE");
        }
        else {
            out.print("FALSE");
        }
    %>
</body>
</html>

输出截图:


截图3.png

可以看到clearBuffer之前的都没输出,isCommit()输出false.
再clearBuffer之前加上flush()则会显示内容。


TIP: 如果在clear()之前,加入flush(),则会抛出IOException,clearBuffer之前加上flush()则会显示内容。

1.response.flushBuffer()out.flush()方法可以将缓冲区数据写到客户端;

  1. 缓冲区已满输出到客户端

相关文章

  • JSP内置对象out.clear(),flush(),clear

    out对象中的clear(),flush(),clearBuffer()都是清楚缓存用的。详细比较一下,错误及遗漏...

  • JSP精要-one

    JSP JSP内置对象 out对象 out.flush()out.clearBufferout.clear Req...

  • 2018-07-19

    jsp的内置对象 内置对象以及四中作用域 jsp内置对象简介 jsp作用域简介:核心知识点 request内置对象...

  • JSP内置对象,Request对象的主要方法

    JSP有哪些内置对象、作用分别是什么 JSP内置对象 - CSDN博客 JSP有9个内置对象: request:封...

  • 2018-10-01JSP内置对象记录

    JSP内置对象 JSP九大内置对象: out request response session applicati...

  • 20160925------JSP内置对象

    JSP内置对象 Jsp内置对象是Web容器创建的一组对象,是不使用new关键字就可以使用的内置对象。常用的JSP九...

  • 2018-08-24

    JSP 内置对象

  • JSP笔记

    JSP的9大内置对象 内置对象是指在JSP的<%=%> 和<% %>中可以直接使用的对象什么是内置对象,就是说不用...

  • JAVA Web基础学习---JSP(二)

    JSP内置对象 JSP内置对象是Web容器创建的一组对象,不使用new关键字就可以使用的内置对象,一共有9种内置对...

  • JSP的内置对象

    Jsp的内置对象 什么是内置对象: 在jsp开发中,会频繁使用到一些对象, 例如HttpSession, Serv...

网友评论

      本文标题:JSP内置对象out.clear(),flush(),clear

      本文链接:https://www.haomeiwen.com/subject/znpseftx.html