1. 程式人生 > >org.apache.catalina.connector.ClientAbortException:null

org.apache.catalina.connector.ClientAbortException:null

參考文章:

org.apache.catalina.connector.ClientAbortException: null

談談request和response的頁面跳轉


 

使用如下程式碼時:

ServletOutputStream outputStream = response.getOutputStream();

outputStream.write(new byte[]{}); // 異常發生在這一句

outputStream.flush();

 

報出org.apache.catalina.connector.ClientAbortException: null異常。

原因:

因為傳送此request請求的頁面在該response進行資料寫出的時候進行頁面跳轉更新為了新的頁面,導致傳送該request請求的頁面被關閉,從而本次請求與響應結束,但是response此時還沒有寫完全部資料並輸出到前臺,當試圖將資料輸出到前端頁面時,因為連線已經被關閉,導致此異常產生。

 

解決方案:

1. 在reponse寫資料到前端頁面這個流程完整的結束之前,將前端頁面鎖屏,禁止使用者進行其他會觸發頁面跳轉的操作,直到response寫資料到前段頁面這個流程完整結束後將鎖屏取消。

2. 使用者觸發的頁面跳轉形式可以考慮修改為在後臺進行轉發,這樣,兩個頁面可以共用同一套request與response,瀏覽器無法感知頁面的變化,應該也可以解決此問題。