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