`

关于response.getOutputStream()抛出 IllegalStateException 异常

    博客分类:
  • java
阅读更多

在JSP使用:
        response.reset();
        response.setContentType("application/vnd.ms-excel");
        OutputStream os = response.getOutputStream();
       
抛出异常:
ERROR [Engine] StandardWrapperValve[jsp]: Servlet.service() for servlet jsp threw exception
java.lang.IllegalStateException: getOutputStream() has already been called for this response

原因:1,是web容器生成的servlet代码中有out.write(""),这个和JSP中调用的response.getOutputStream()产生冲突.
即Servlet规范说明,不能既调用 response.getOutputStream(),又调用response.getWriter(),无论先调用哪一个,
在调用第二个时候应会抛出 IllegalStateException,因为在jsp中,out变量是通过response.getWriter得到的,
在程序中既用了 response.getOutputStream,又用了out变量,故出现以上错误。
解决方案:在程序中添加:
out.clear();
out = pageContext.pushBody();
就可以了;
      2,不要在%><%之间写内容包括空格和换行符
     
      3,在页面写入图片的时候,需要flush()
      OutputStream output=response.getOutputStream();
      output.flush();

      4,在页面确定写入,<meta http-equiv="Content-Type" content="text/html; charset=gb2312">

分享到:
评论
1 楼 BIGN 2007-05-28  
4,在页面确定写入 <meta http-equiv="Content-Type" content="text/html; charset=gb2312">

相关推荐

    handleStream ServletOutputStream out = response.getOutputStream(); InputStream i

    ServletOutputStream out = response.getOutputStream(); out.write("&lt;html&gt;&lt;body&gt;Hello, World!&lt;/body&gt;&lt;/html&gt;".getBytes()); out.flush(); out.close(); ``` 描述中的"InputStream i" 提到了输入流`InputStream`...

    java.lang.IllegalStateException: getOutputStream() has already解决办法

    纠结了半天的 java.lang.IllegalStateException: getOutputStream() has already。这个问题困扰了半天,在网上查阅了大量资料 出这个错误一般就是下面2个.....

    response设置的实例源码

    本篇将深入探讨`response`设置的实例源码,以及如何在Servlet中应用这些设置。 一、Response对象的基本介绍 `HttpServletResponse`接口是`ServletResponse`接口的子接口,它扩展了通用的响应功能,以适应HTTP协议的...

    java.lang.IllegalStateException: OutputStream already obtain

    3. **重复调用getOutputStream()**:某些API可能会在内部缓存OutputStream,如果你多次调用获取OutputStream的方法,第二次及以后的调用可能会抛出此异常。 4. **框架或库的特定行为**:某些框架或库在处理...

    Response-Headers详解

    try (OutputStream out = response.getOutputStream()) { // 使用Apache POI或其他库生成Excel内容并写入out流 } ``` #### 五、动态生成JPEG图像 如果需要动态生成并发送JPEG格式的图像,也需要设置正确的响应...

    org.apache.catalina.connector.ClientAbortException和TOMCAT的日志配置

    问题1:TOMCAT下载文件出错:org.apache.catalina.connector.ClientAbortException. 问题2:TOMCAT记录接收数据大小、发送数据大小和请求处理时间

    java response 下载文件方法

    OutputStream ou = new BufferedOutputStream(response.getOutputStream()); response.setContentType("application/octet-stream"); // 设置响应类型为二进制流 // 写入响应流并关闭 ou.write(buffer); ou....

    anmo_mybatis_generator.zip

    public void code(HttpServletRequest request, HttpServletResponse response) throws IOException{ String[] tableNames = new String[]{};... IOUtils.write(data, response.getOutputStream()); }

    JSP内置对象request和response.doc

    也就是说,要么使用getWriter(),要么使用getOutputStream(),否则将抛出IllegalStateException异常。 字符响应流 使用getWriter()方法获取字符流时,需要注意字符编码问题。默认情况下,字符编码为ISO-8859-1,但...

    随机验证码源代码详解

    随机获取验证码 public class CheckNumberServlet extends HttpServlet { ... ServletOutputStream sos = response.getOutputStream();…………………………………………………………………………………………

    jpeg图像读取

    确保正确处理可能出现的异常。 ```cpp void CMyDialog::OnInitDialog() { CDialog::OnInitDialog(); Gdiplus::GdiplusStartupInput gdiplusStartupInput; ULONG_PTR gdiplusToken; Gdiplus::GdiplusStartup(&...

    二进制转换图片.rar

    OutputStream o = response.getOutputStream(); // 将图片转换成字符串 File f = new File("f:\\Vista.png"); FileInputStream fis = new FileInputStream( f ); byte[] bytes = new byte[fis.available...

    JMESA SERVLET

    TextExport.export(response.getOutputStream(), table); } else if ("pdf".equals(format)) { JTable table = new JTable(dataList); PdfExport.export(response.getOutputStream(), table); } else if ("xls...

    getOutputStream() has already been called for this response 错误解决

    在Java Web开发中,"getOutputStream() has already been called for this response" 是一个常见的错误,通常出现在使用Servlet或JSP时。这个错误意味着在HTTP响应中,`getOutputStream()`已经被调用,然后尝试再次...

    验证码下载,验证码实现

    简单的验证码实现 public static void ... ServletOutputStream out = response.getOutputStream(); JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out); encoder.encode(image); out.close(); }

    tomcat6下jsp出现getOutputStream() has already been called for this response异常的原因和解决方法

    在使用Tomcat 6服务器部署和运行Java Server Pages (JSP) 时,可能会遇到一个特定的异常:“getOutputStream() has already been called for this response”。该异常发生在尝试向响应对象中写入数据时,已经调用了...

    Java Servlet输出中文乱码问题解决方案

    ServletOutputStream outputStream = response.getOutputStream(); outputStream.write(date.getBytes()); } ``` 这是因为服务器端和浏览器端的编码格式不一致所致。解决方法是使浏览器端和服务器端的编码格式...

    SpringBoot导出Excel的四种方式

    OutputStream outputStream = response.getOutputStream(); JxlsHelper.getInstance() .processTemplate(templateStream, outputStream, Collections.singletonMap("dataList", dataList)); response....

    java web的注意事项

    getWriter() 和Response.getOutputStream冲突

    访问或添加三个范围的属性与获取Request-Session-ServletContext-Response对象.rar

    开发者可以通过`response.getWriter()`或`response.getOutputStream()`来写入响应体,`response.sendRedirect()`用于重定向,`response.setStatus()`设置状态码,`response.setHeader()`设置响应头。 在实际开发中...

Global site tag (gtag.js) - Google Analytics