采用<JSP:FORWORD> 该方法是利用服务器端先将数据输出到缓冲区的机制,在把缓冲区的内容发送到客户端之前,原来的不发送,改为发送该页面的内容,如果在<JSP: FORWORD>之前有很多输出,前面的输出已使缓冲区满,将自动输出到客户端,那么该语句将不起作用,这一点应该特别注意. 如下面的例子中(1)会输出index.html的内容,2 不会输出index.html的内容,而是输出out.println("@@@@@@@@@@@@@@@@@"); 中的内容,并且在服务端会抛出:java.lang.IllegalStateException: Response already committed 异常,但客户端没有任何错误输出。
(2)
(1)
<%
@page buffer
=
"
1kb
"
%>
<%
long i = 0 ;
for (i = 0 ;i < 10 ;i ++ )
{
out.println( " @@@@@@@@@@@@@@@@@ " );
}
%>
< jsp:forward page = " ./index.html " />
<%
long i = 0 ;
for (i = 0 ;i < 10 ;i ++ )
{
out.println( " @@@@@@@@@@@@@@@@@ " );
}
%>
< jsp:forward page = " ./index.html " />
(2)
<%
@page buffer
=
"
1kb
"
%>
<%
long i = 0 ;
for (i = 0 ;i < 600 ;i ++ )
{
out.println( " @@@@@@@@@@@@@@@@@ " );
}
%>
<%
long i = 0 ;
for (i = 0 ;i < 600 ;i ++ )
{
out.println( " @@@@@@@@@@@@@@@@@ " );
}
%>