小默

【转】关于JSP页面出现空页面或部分页面

原文:http://www.blogjava.net/xiaomage234/archive/2008/10/21/235710.html
===================
现象
1,内容区显示空白或部分页面;
2,“查看源文件”,里面代码不完整;

解决方式
1,在jsp第一行添加 "<%@ page buffer="108kb" autoFlush="true" %>",如果还是不行,增加108kb这个数值,一直到页面出现jsp抛错的堆栈信息。
2,根据堆栈信息解决此问题。

原因以及本质

 

服务端的输出缓冲区 
缺省情况下:服务端要输出到客户端的内容,不直接写到客户端,而是先写到一个输出缓冲区中.只有在下面三中情况下,才会把该缓冲区的内容输出到客户端上: 


1
)该jsp网页已完成信息的输出 

2
)输出缓冲区已满 

3
)jsp中调用了out.flush()或response.flushbuffer() 

输出缓冲区的大小可以用: 或response.setbuffersize()设置,如下: 

1)设置输出缓冲区的大小为1kb。 或response.setbuffersize(1
); 

2)设置输出缓冲区的大小为0,即不缓冲。 或response.setbuffersize(0
); 

用response.getbuffersize()或out.getbuffersize()可取的输出缓冲区的大小,单位为字节. 用response.iscommitted()可检查看服务端是否已将数据输出到客户端. 如果返回值是true则已将数据输出到客户端,是false则还没有. 

1,jsp代码有bug[或者缺少相关配置文件,相关依赖类];
2,当页面buffer用得差不多的时候,这时候如果有运行时异常,tomcat处理不了时就会将运行时异常信息输出到jsp页面的buffer区,导致有部分内容还停留在buffer,而此时页面在还未完成网页输出,缓冲区未满,也未调用flush的情况下不会继续处理后面的网页信息输出,tomcat将此时已经处理的部分代码返回给浏览器去解析,由于内容不完整,导致了出现 空页面或部分页面。
3,可以调用 <%=out.getRemaining() %> 方法查看jsp的buffer剩余量。

=============
完全看不懂啊,悲剧。。。

posted on 2010-07-29 18:35 小默 阅读(432) 评论(0)  编辑 收藏 引用 所属分类: Language


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理


导航

统计

留言簿(13)

随笔分类(287)

随笔档案(289)

漏洞

搜索

积分与排名

最新评论

阅读排行榜