response.getOutputStream();是不是在servlet里面就不可以请求转发或者重定向,有什么解决方法

response.reset();response.setContentType("application/x-msdownload");response.setHead... response.reset();
response.setContentType("application/x-msdownload");
response.setHeader("Content-Disposition", "attachment; filename="
+ Chinesization.toUtf8String(gaugeOutfit) + ".xls");

OutputStream out = response.getOutputStream();
while ((len = br.read(buf)) > 0) {
out.write(buf, 0, len);
}
br.close();
out.flush();
out.close();

request.getRequestDispatcher("/Retirement/OneTypeMessage.jsp").forward(request, response);

出错的代码,.getOutputStream()之后请求转发就会抛这个异常java.lang.IllegalStateException:
展开
 我来答
百度网友bee952e
推荐于2017-11-25 · 超过27用户采纳过TA的回答
知道答主
回答量:69
采纳率:100%
帮助的人:32.6万
展开全部
servlet 两种跳转方式:重定向、请求转发
看你的代码像是想给前台页面写入数据, 就是类似ajax
你这out引用我不知道有什么用,写入完了之后也没有放到作用域 ,请求转发到前台没什么用吧。

你这OutputStream out 我想的话 你想的写的是 PrintWriter out = response.getWriter();
你的out是对流操作的,(比如说文件流什么的, 你这对象叫什么输出流),
我的out是对一个输出对象,可以像前台jsp页面直接写html代码。 当然也可以封装成json格式,到前台进行解析。

我猜想你的这个方法是想在servlet中写jsp页面中的html代码。

我其实也就一半调子,个人见解,望采纳
追问
这是一个无组件的下载功能,还有代码是poi生成的execl我没粘上来,out是用来把execl写出到自己所保存的目录,不是往前台写出数据的
追答
如果是文件流操作的话,一般情况都会有异常处理,
像你这功能报异常的话,一般就是读写文件流的时候有问题。
我就一半调子,看这代码也看不出什么端详来。具体的还是得你自己琢磨,这不有外网嘛。
匿名用户
2012-12-04
展开全部
你说的不太清楚。
response本身就是对请求的响应,响应时返回流。
猜你想在另一请求中用上次请求中得到的结果流;可以在第一次请求时用session记下,在另一请求中获取到!
追问
代码我补充上了,有时间的话帮我看看
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式