title: getOutputStream() has already been called for this response
body: <p>I google the error message <code>getOutputStream() has already been called for this response</code>
  and many people said it is because of the space or newline after <code>&lt;%</code> or <code>%&gt;</code>, but in my code , there is no a space or a newline. I am using tomcat6 on linux.</p>
  
  <pre><code>&lt;%@
      page import="java.servlet.*,
      javax.servlet.http.*,
      java.io.*,
      java.util.*,
      com.lowagie.text.pdf.*,
      com.lowagie.text.*"
      %&gt;&lt;%
      response.setContentType("application/pdf");
      Document document = new Document();
      try{
          ByteArrayOutputStream buffer = new ByteArrayOutputStream();
          PdfWriter.getInstance(document, buffer);
          document.open();
          PdfPTable table = new PdfPTable(2);
          table.addCell("1");
          table.addCell("2");
          table.addCell("3");
          table.addCell("4");
          table.addCell("5");
          table.addCell("6");
          document.add(table);
          document.close();
          DataOutput dataOutput = new DataOutputStream(response.getOutputStream());
          byte[] bytes = buffer.toByteArray();
          response.setContentLength(bytes.length);
          for(int i = 0; i &lt; bytes.length; i++)
          {
          dataOutput.writeByte(bytes[i]);
          }
      }catch(DocumentException e){
          e.printStackTrace();
      }
  
  %&gt;
  </code></pre>
  
  <p>~</p>
  
  <pre><code>org.apache.jasper.JasperException: java.lang.IllegalStateException: getOutputStream() has already been called for this response
      org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:522)
      org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:410)
      org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:342)
      org.apache.jasper.servlet.JspServlet.service(JspServlet.java:267)
      javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
  </code></pre>
  
  <p>root cause </p>
  
  <pre><code>java.lang.IllegalStateException: getOutputStream() has already been called for this response
      org.apache.catalina.connector.Response.getWriter(Response.java:610)
      org.apache.catalina.connector.ResponseFacade.getWriter(ResponseFacade.java:198)
      org.apache.jasper.runtime.JspWriterImpl.initOut(JspWriterImpl.java:125)
      org.apache.jasper.runtime.JspWriterImpl.flushBuffer(JspWriterImpl.java:118)
      org.apache.jasper.runtime.PageContextImpl.release(PageContextImpl.java:188)
      org.apache.jasper.runtime.JspFactoryImpl.internalReleasePageContext(JspFactoryImpl.java:118)
      org.apache.jasper.runtime.JspFactoryImpl.releasePageContext(JspFactoryImpl.java:77)
      org.apache.jsp.Account.Domain.testPDF_jsp._jspService(testPDF_jsp.java:94)
      org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
      javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
      org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:374)
      org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:342)
      org.apache.jasper.servlet.JspServlet.service(JspServlet.java:267)
      javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
  </code></pre>