現(xiàn)象
1,內(nèi)容區(qū)顯示空白或部分頁面;
2,“查看源文件”,里面代碼不完整;

解決方式
1,在jsp第一行添加 "<%@ page buffer="108kb" autoFlush="true" %>",如果還是不行,增加108kb這個數(shù)值,一直到頁面出現(xiàn)jsp拋錯的堆棧信息。
2,根據(jù)堆棧信息解決此問題。

原因以及本質(zhì)

 

服務端的輸出緩沖區(qū) 
缺省情況下:服務端要輸出到客戶端的內(nèi)容,不直接寫到客戶端,而是先寫到一個輸出緩沖區(qū)中.只有在下面三中情況下,才會把該緩沖區(qū)的內(nèi)容輸出到客戶端上: 


1
)該jsp網(wǎng)頁已完成信息的輸出 

2
)輸出緩沖區(qū)已滿 

3
)jsp中調(diào)用了out.flush()或response.flushbuffer() 

輸出緩沖區(qū)的大小可以用: 或response.setbuffersize()設置,如下: 

1)設置輸出緩沖區(qū)的大小為1kb。 或response.setbuffersize(1
); 

2)設置輸出緩沖區(qū)的大小為0,即不緩沖。 或response.setbuffersize(0
); 

用response.getbuffersize()或out.getbuffersize()可取的輸出緩沖區(qū)的大小,單位為字節(jié). 用response.iscommitted()可檢查看服務端是否已將數(shù)據(jù)輸出到客戶端. 如果返回值是true則已將數(shù)據(jù)輸出到客戶端,是false則還沒有. 

1,jsp代碼有bug[或者缺少相關(guān)配置文件,相關(guān)依賴類];
2,當頁面buffer用得差不多的時候,這時候如果有運行時異常,tomcat處理不了時就會將運行時異常信息輸出到jsp頁面的buffer區(qū),導致有部分內(nèi)容還停留在buffer,而此時頁面在還未完成網(wǎng)頁輸出,緩沖區(qū)未滿,也未調(diào)用flush的情況下不會繼續(xù)處理后面的網(wǎng)頁信息輸出,tomcat將此時已經(jīng)處理的部分代碼返回給瀏覽器去解析,由于內(nèi)容不完整,導致了出現(xiàn) 空頁面或部分頁面。
3,可以調(diào)用 <%=out.getRemaining() %> 方法查看jsp的buffer剩余量。