1. 程式人生 > >JSP--out物件--flush之後clear異常的原因

JSP--out物件--flush之後clear異常的原因

關於flush在clear之後使用則系統會報錯的原因

兩個方法

(1)clear() :清除緩衝區的內容,不傳送到客戶端;   

(2    flush() :將緩衝區內容輸出到客戶端;

首先,JAVA使用流時,會有一個儲存資料的緩衝區,在輸出流中對於資料存取的方式是:每當緩衝區已滿時,輸出一次,然後等待

下一次緩衝區被填滿,再次整體取出。理想狀態下,應該是最後一批次的資料恰巧填滿的緩衝區,然後整體取出一次。

但是往往最後一批資料不能總是填滿緩衝區,僅填充了一部分,但此時緩衝區仍然在等待被填充滿後再整體送出,這樣就產生了矛盾。此時我們就需要強制輸出緩衝區的內容,這裡就產生了flush()方法:即強制輸出緩衝區內當前內容,並清空當前緩衝區。

這個方法常用於close()之前,對緩衝區進行最後一次判定,有內容則輸出,並且清空緩衝區,從而避免漏掉一些資訊。

而clear()同樣是對緩衝區進行清空,那麼當你已經使用flush()方法之後,再使用clear()方法,就相當於對緩衝區進行了兩次清空操作,第一次是flush(),第二次是clear(),顯然,第二次是無效的,故而報錯。

由此可知,產生錯誤的原因是兩者同時具有對緩衝區清空的能力,當clear()位於flush()之後使用,會造成二次清空緩衝區的情況出現,從而導致clear()方法無效,故而報錯。