JSP緩存問題導致頁面顯示不全

最近總是碰到在jsp頁面中輸出數據時,頁面顯示不全的問題,一些html標記也被截斷,而當我減少輸出的數據時卻沒有問題,後來才知道是jsp緩存大小在作怪,這個問題困擾了我大半天,終於找到解決方案了。
在jsp頁面中,默認是autoFlush=”true”,也就是
<%@ page contentType=”text/html;charset=UTF-8″ autoFlush=”true”%>
但通常情況下只用寫成<%@ page contentType=”text/html;charset=UTF-8″%>就默認爲autoFlush=”true”。
那麼當jsp頁面中要輸出的數據很多時,比如從數據庫中取出了上百條記錄在jsp頁面顯示時,會出現jsp頁面顯示不全,一些html標記被截斷的現象,比如對一個普通的html標記:
<input type="hidden" name="qd45 " id="qd45 " value="1"/> 可能會截斷成<input ty

解決這種現象的方法如下:
將autoFlush設爲false,也就是:
<%@ page contentType=”text/html;charset=UTF-8″ autoFlush=”false”%>
但也可能出現錯誤,這個時候很可能會報java.io.IOException: Error: JSP Buffer overflow的錯誤,表示jsp緩存大小不夠,所以就必須設置增大jsp的緩存大小,也就是如buffer=”300kb”,完整的如:
<%@ page contentType=”text/html;charset=UTF-8″ autoFlush=”false” buffer=”300kb”%>
另外要注意的是:buffer的值設置的如果不夠大,那麼在顯示數據的時候,由於沒有足夠的緩存會拋出一些異常,比如NullPointer錯誤等,這個時候並不是你程序出了錯,只要將buffer值再設置得大一些到不再出錯即可。
—————–
進行了以上設置後發現,現在還是有問題,必須要調高下tomcat的jvm大小纔行,不然的話,當你調高jsp緩存大小的時候,會不夠用的。。。。
一般這種情況下,建議減少在jsp中輸出的數據大小,找另外的方法替代在jsp中輸出大量數據的做法。關於這個問題的解決方法,還在繼續尋找中。。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章