title: "getOutputStream()" has already been called for this response
body: <p>i'm working on a project with Spring, i have this problem, i google the error message and i did find a solutions even all SO posts about this same problem</p>
  
  <pre><code>java.lang.IllegalStateException: "getOutputStream()" has already been called for this response
      at org.apache.catalina.connector.Response.getWriter(Response.java:578)
      at org.apache.catalina.connector.ResponseFacade.getWriter(ResponseFacade.java:212)
      at javax.servlet.ServletResponseWrapper.getWriter(ServletResponseWrapper.java:109)
      at org.apache.jasper.runtime.JspWriterImpl.initOut(JspWriterImpl.java:115)
      at org.apache.jasper.runtime.JspWriterImpl.flushBuffer(JspWriterImpl.java:108)
      at org.apache.jasper.runtime.PageContextImpl.release(PageContextImpl.java:175)
      at org.apache.jasper.runtime.JspFactoryImpl.internalReleasePageContext(JspFactoryImpl.java:120)
      at org.apache.jasper.runtime.JspFactoryImpl.releasePageContext(JspFactoryImpl.java:75)
      at org.apache.jsp.WEB_002dINF.Pages.generate_jsp._jspService(generate_jsp.java:209)
      at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
      at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
      at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:438)
      at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:396)
      at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:340)
      at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
      at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:291)
      at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
      at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:721)
      at org.apache.catalina.core.ApplicationDispatcher.doInclude(ApplicationDispatcher.java:584)
      at org.apache.catalina.core.ApplicationDispatcher.include(ApplicationDispatcher.java:523)
      at org.springframework.web.servlet.view.InternalResourceView.renderMergedOutputModel(InternalResourceView.java:230)
      at org.springframework.web.servlet.view.AbstractView.render(AbstractView.java:250)
      at org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1060)
      at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:798)
      at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:716)
      at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:647)
      at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:552)
      at javax.servlet.http.HttpServlet.service(HttpServlet.java:622)
      at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
      at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:291)
      at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
      at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
      at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239)
      at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
      at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:219)
      at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:106)
      at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)
      at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:142)
      at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)
      at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:617)
      at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88)
      at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:518)
      at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1091)
      at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:668)
      at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1521)
      at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1478)
      at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
      at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
      at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
      at java.lang.Thread.run(Unknown Source)
  </code></pre>
  
  <p><em><strong>this is my controller :</strong></em></p>
  
  <pre><code>    @RequestMapping(method = RequestMethod.GET, value = "/GenerateM")
      public String genererGet(HttpServletRequest request, ModelMap model, HttpServletResponse response) throws Exception {
     // Some code ...
  
          OutputStream out;
          try {
              response.setContentType("rtf");
              String filename = name + ".out.rtf";
              response.setHeader("Content-Disposition", "attachment; filename = " + filename);
              out = response.getOutputStream();
              FileInputStream in = new FileInputStream(new File(rtf.getRtfOutput()));
              byte[] buffer = new byte[4096];
              int length;
              while ((length = in.read(buffer)) &gt; 0) {
                  out.write(buffer, 0, length);
              }
              in.close();
              out.flush();
              out.close();
          } catch (IOException a) {
              a.printStackTrace();
          }
          return "generate";
      }
  </code></pre>
  
  <p>i saw many SO posts like : <a href="https://stackoverflow.com/questions/1776142/getoutputstream-has-already-been-called-for-this-response">THIS</a> and <a href="https://stackoverflow.com/questions/14065561/java-lang-illegalstateexception-getoutputstream-has-already-been-called-for-t">THIS</a> and <a href="https://stackoverflow.com/questions/25909657/java-lang-illegalstateexception-getoutputstream-has-already-been-called-for-t">THIS</a> but no solution for me</p>
  
  <p><strong>can some one help ?</strong></p>