我是大图图
2015-09-10 16:52
flush将缓冲区内容输出到客户端,这里的缓冲区是缓冲什么的?clear报错,clearbuffer不报错这是为什么?原理是什么
clearBuffer():该方法用于清除缓冲区里的数据,并且把数据写到客户端,在缓冲区的数据为空的时候,那么似乎也这个方法将会产生IOException错误。
clear():该方法用于清除缓冲区里的数据,但不把数据写到客户端,在缓冲区的数据为空的时候,那么似乎也这个方法将会产生IOException错误,所以一般要使用try……catch……块包住。
clear()是删除这个方法前面的缓冲区,如果前面有一个flush()会和flush()方法冲突,又要删除缓冲区内容又要输出缓冲区内容,矛盾,而clearBuffer()是删除flush()到clearBuffer()之间的缓冲区内容所以不会发送异常,因为之间要么有缓冲区内容要么null;
<%out.println("窗前明月光</br>"); %> <%out.println("疑是地上霜</br>"); %> <%out.println("举头望明月</br>"); %> <%out.println("低头思故乡</br>"); %> <%out.flush(); %> <%=out.getBufferSize() %> <%=out.getRemaining() %>
<%out.println("窗前明月光</br>"); %> <%out.println("疑是地上霜</br>"); %> <%out.println("举头望明月</br>"); %> <%out.println("低头思故乡</br>"); %> <%out.clear(); %> <%=out.getBufferSize() %> <%=out.getRemaining() %>
这两段代码执行后,后者前面的诗句不输出,但后面剩余缓冲区大小一样。说明,flush就是输出并清空缓冲区,clear直接清空缓冲区
不用flush也能显示内容,难道每段输出有个默认的flush?
JAVA遇见HTML——JSP篇
248277 学习 · 3071 问题
相似问题