2 刷新輸出流
response內(nèi)部的輸出流有8KB的緩沖區(qū),如果緩沖區(qū)滿了的話,那么response會(huì)自動(dòng)去提交,即把緩沖區(qū)內(nèi)容輸出給客戶端。這時(shí)調(diào)用response的isCommited()方法返回的就是true,表示response已經(jīng)提交過至少一次了。
也可以在緩沖區(qū)沒有裝滿時(shí)調(diào)用response.flushBuffer()方法刷新輸出流,把緩沖區(qū)中的數(shù)據(jù)發(fā)送到客戶端去。同樣,這也會(huì)導(dǎo)致response的isCommited()方法返回的就是true,表示response已經(jīng)提交過至少一次了。
其實(shí)也可以調(diào)用response.getWirter().flush()方法達(dá)到與調(diào)用response.flushBuffer()相同的效果。這兩種方式基本相同!
一旦response的isCommited()方法返回true,這說(shuō)明服務(wù)器已經(jīng)至少把狀態(tài)碼、響應(yīng)頭等數(shù)據(jù)發(fā)送給客戶端了,也就是說(shuō)已經(jīng)開始向客戶響應(yīng)了。
但是,這里你要注意一下,不是說(shuō)服務(wù)器向客戶端發(fā)送了數(shù)據(jù),就表示數(shù)據(jù)一定會(huì)顯示在瀏覽器上。因?yàn)榭蛻舳说臑g覽器也許會(huì)有自己的緩存,在瀏覽器的緩存沒有滿之前,瀏覽器是不會(huì)去顯示的。例如IE8和Google瀏覽器就是這樣,但FireFox會(huì)馬上顯示數(shù)據(jù)!
測(cè)試得到IE8的緩存為16KB,只要響應(yīng)數(shù)據(jù)大于16KB就會(huì)在IE8上顯示出來(lái)。、