JSP页面出现空页面或部分页面

来源:互联网 发布:罗马城市 知乎 编辑:程序博客网 时间:2024/05/01 16:03

现象:

1,内容区显示空白或部分页面;

2,“查看源文件”,里面代码不完整;

 

解决方式:

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

2,根据堆栈信息解决此问题。

个人认为很多jsp页面问题都可以通过此方法寻求解决方案。

 

原因以及本质:

服务端的输出缓冲区 

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

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剩余量。

0 0
原创粉丝点击