1. 程式人生 > >記一次getOutputStream() has already been called for this response事件

記一次getOutputStream() has already been called for this response事件

這是我在做Excel表格匯出的時候碰見得一個問題,當時很頭疼,所以寫一下防止下次踩坑。

首先根據這個錯誤關鍵資訊,得知是錯誤產生原因是response.getWriter()和response.getOutputStream()等介面在呼叫時發生了衝突導致的。

後來也去找了各路大神寫的解決方案,但是大部分都說的時可能在前端JSP頁面呼叫了response.getOutputStream(),但是我們是前後端分離,根本不在這樣的事情,而且我只是一個get方法頁面根本就不需要呼叫方法。那麼問題來了,既然不是前端的問題,那一定是後端的問題了。

只能祭出debug,但是又出現了一個有意思的事情,因為他根本就沒進入我的controller。

這個時候就引人深思了。所以我想到是不是因為AOP裡面有問題

這是改過之後的程式碼,當時忘了截圖。

發現問題是因為我們之前在AOP里加了fastJSON序列化物件,所以他會呼叫一次getObjectWritter,但是就是這麼個原因導致我的匯出一點也不能用。

這次事件被我稱為fastJSON綠了response.getOutPutStream()事件