JSP 中的 autoFlush 属性
autoFlush是 JSP page指令的属性,用于控制 JSP 内置对象out(JspWriter)的缓冲区满时是否自动刷新输出,与buffer属性配合使用(buffer定义缓冲区大小)。
核心细节:
语法格式:
<%@ page autoFlush="true|false" buffer="size|none" %>;默认值:
true(缓冲区满时自动刷新);关键概念
:
out对象的缓冲区:JSP 输出内容时,先写入内存缓冲区(默认 8KB),而非直接发送到客户端;- 刷新(flush):将缓冲区中的内容一次性发送到客户端,并清空缓冲区。
不同取值的行为:
| autoFlush 值 | 缓冲区状态 | 行为描述 |
|---|---|---|
| true(默认) | 缓冲区未满 | 内容暂存缓冲区,直到缓冲区满 / 页面结束 / 手动调用out.flush()时发送; |
| true | 缓冲区满 | 自动刷新缓冲区(发送内容 + 清空),无异常,继续执行; |
| false | 缓冲区未满 | 与 true 一致; |
| false | 缓冲区满 | 直接抛出java.io.IOException异常(缓冲区溢出),停止输出; |
| - | buffer=”none”(无缓冲区) | autoFlush 失效,所有内容直接输出到客户端(即使 autoFlush 设为 false); |
注意事项:
autoFlush="false"仅在需要严格控制输出时机(如文件下载、流式响应)时使用,需手动调用out.flush()避免缓冲区溢出;- 缓冲区大小(
buffer)可自定义(如16kb),但不宜过大(占用内存)或过小(频繁刷新影响性能); - 若页面输出大量内容(如大数据报表),建议保持默认的
autoFlush="true",避免异常。
示例:
1 | <%@ page contentType="text/html;charset=UTF-8" buffer="4kb" autoFlush="false" %> |



