为了账号安全,请及时绑定邮箱和手机立即绑定

请问,为何有out.flush();语句,页面就不能重定向页面呢?

<%@ page language="java" import="java.util.*,java.io.*" contentType="text/html; charset=utf-8"%>
<%
	response.setContentType("text/html;charset=utf-8");
	out.print("<h1>response内置对象</h1>");
	out.print("<hr>");
	out.flush();
	PrintWriter outer=response.getWriter();
	outer.println("大家好,我是response对象生成的输出流outer对象");
	response.sendRedirect("reg.jsp");//请求重定向
%>


正在回答

2 回答

使用out.flush()语句会抛出异常,导致后面的代码不能执行,也就不能重定向页面了。你可以自己运行一下代码,不给flush加注释,看看会有什么问题:)

2 回复 有任何疑惑可以回复我~
#1

小羊爱主 提问者

非常感谢!
2015-06-12 回复 有任何疑惑可以回复我~
#2

YibuMe

使用out.flush()为什么会抛出异常 在没有加入重定向方法时 不是照样可以执行????
2015-09-06 回复 有任何疑惑可以回复我~
#3

stagry 回复 YibuMe

引用下面网友的回复 1、重定向之前,不能够有out.close()或者out.flush()操作。否则会有java.lang.IllegalStateException。 2、重定向之前,如果response对象缓存有数据,则这些数据会被清空 直白点说就是,response.sendRedirect的response对象和response.getWriter的response对象是一个,如果flush了,response对象缓存的数据会被清空,这样的话,就会有异常啦
2015-11-02 回复 有任何疑惑可以回复我~

看了楼上的还是没有明白。out和response的printwriter应该是两个不同的输出对象。out.flush应该是清空out对象的输出,为什么response对象的输出也会被清空?

0 回复 有任何疑惑可以回复我~
#1

李淳罡

我觉得是由于执行out.flush()操作后出现的异常,导致后面语句不能执行。out对象缓存数据的清空对response对象没有关系,感觉3楼表示错了。
2016-05-10 回复 有任何疑惑可以回复我~
#2

qq_慕仰0048378

为什么呢?蹲一个回答
2022-03-03 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

请问,为何有out.flush();语句,页面就不能重定向页面呢?

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信