2 刷新输出流
response内部的输出流有8KB的缓冲区,如果缓冲区满了的话,那么response会自动去提交,即把缓冲区内容输出给客户端。这时调用response的isCommited()方法返回的就是true,表示response已经提交过至少一次了。
也可以在缓冲区没有装满时调用response.flushBuffer()方法刷新输出流,把缓冲区中的数据发送到客户端去。同样,这也会导致response的isCommited()方法返回的就是true,表示response已经提交过至少一次了。
其实也可以调用response.getWirter().flush()方法达到与调用response.flushBuffer()相同的效果。这两种方式基本相同!
一旦response的isCommited()方法返回true,这说明服务器已经至少把状态码、响应头等数据发送给客户端了,也就是说已经开始向客户响应了。
但是,这里你要注意一下,不是说服务器向客户端发送了数据,就表示数据一定会显示在浏览器上。因为客户端的浏览器也许会有自己的缓存,在浏览器的缓存没有满之前,浏览器是不会去显示的。例如IE8和Google浏览器就是这样,但FireFox会马上显示数据!
测试得到IE8的缓存为16KB,只要响应数据大于16KB就会在IE8上显示出来。、