response.getOutputStream();是否在servlet里面就不可以请求转发或者重定向,有啥解决方法
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了response.getOutputStream();是否在servlet里面就不可以请求转发或者重定向,有啥解决方法相关的知识,希望对你有一定的参考价值。
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:
看你的代码像是想给前台页面写入数据, 就是类似ajax
你这out引用我不知道有什么用,写入完了之后也没有放到作用域 ,请求转发到前台没什么用吧。
你这OutputStream out 我想的话 你想的写的是 PrintWriter out = response.getWriter();
你的out是对流操作的,(比如说文件流什么的, 你这对象叫什么输出流),
我的out是对一个输出对象,可以像前台jsp页面直接写html代码。 当然也可以封装成json格式,到前台进行解析。
我猜想你的这个方法是想在servlet中写jsp页面中的html代码。
我其实也就一半调子,个人见解,望采纳追问
这是一个无组件的下载功能,还有代码是poi生成的execl我没粘上来,out是用来把execl写出到自己所保存的目录,不是往前台写出数据的
追答如果是文件流操作的话,一般情况都会有异常处理,
像你这功能报异常的话,一般就是读写文件流的时候有问题。
我就一半调子,看这代码也看不出什么端详来。具体的还是得你自己琢磨,这不有外网嘛。
response本身就是对请求的响应,响应时返回流。
猜你想在另一请求中用上次请求中得到的结果流;可以在第一次请求时用session记下,在另一请求中获取到!追问
代码我补充上了,有时间的话帮我看看
Java:如何使用response.getOutputStream()为Ajax返回结果呢?
平时返回数据都用的response.getWriter();,直接out.write("finish");就行了,但是现在项目代码中已经用到了response.getOutputStream(),此时就不能再使用response.getWriter();,想请教用response.getOutputStream()这个流该如何为Ajax返回结果呢?
参考技术A response.getOutputStream().write(byte[],int,int)。用流读取内容呢吧?以上是关于response.getOutputStream();是否在servlet里面就不可以请求转发或者重定向,有啥解决方法的主要内容,如果未能解决你的问题,请参考以下文章
Java Web报错:getOutputStream() has already been called for this response解决方案
response.getOutputStream();是否在servlet里面就不可以请求转发或者重定向,有啥解决方法
是否应该在 HttpServletResponse.getOutputStream()/.getWriter() 上调用 .close()?