本帖最后由 u011402153 于 2014-11-20 14:50:37 编辑

解决方案 »

  1.   


    java.lang.IllegalStateException: getOutputStream() has already been called for this response
    at org.apache.catalina.connector.Response.getWriter(Response.java:639)
    at org.apache.catalina.connector.ResponseFacade.getWriter(ResponseFacade.java:214)
    at javax.servlet.ServletResponseWrapper.getWriter(ServletResponseWrapper.java:105)
    at javax.servlet.ServletResponseWrapper.getWriter(ServletResponseWrapper.java:105)
    at javax.servlet.ServletResponseWrapper.getWriter(ServletResponseWrapper.java:105)
    at org.springframework.security.web.context.SaveContextOnUpdateOrErrorResponseWrapper.getWriter(SaveContextOnUpdateOrErrorResponseWrapper.java:109)
    at org.apache.jasper.runtime.JspWriterImpl.initOut(JspWriterImpl.java:125)
    at org.apache.jasper.runtime.JspWriterImpl.flushBuffer(JspWriterImpl.java:118)
    at org.apache.jasper.runtime.PageContextImpl.release(PageContextImpl.java:182)
    at org.apache.jasper.runtime.JspFactoryImpl.internalReleasePageContext(JspFactoryImpl.java:126)
    at org.apache.jasper.runtime.JspFactoryImpl.releasePageContext(JspFactoryImpl.java:80)
    at org.apache.jsp.view.baseinfo.idcimport_002dloadsuccess_jsp._jspService(idcimport_002dloadsuccess_jsp.java:282)
    at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)以上是错误代码 我如果在action中  return null  则不会报错
      

  2.   

    没有看源码,大概意思是getWriter方法会调用getOutputStream方法,这个输出流不能被多次调用。
    建议用完了的地方close,保证串行使用。
      

  3.   

    我省略部分没用代码 大概源码如下:string path = GlobalKeys.Constant.ATTACH_SAVE;
            String tmpPath = File.separator + "import" + File.separator;
            File targetFolder = new File(path, tmpPath);
            if (!targetFolder.exists()) {
                targetFolder.mkdirs();
            }
            String fileName = dataImport.getAttchFileName();
            File target = new File(targetFolder, fileName);
            FileUtil.copyFile(dataImport.getAttch(), target);
            List<String[]> strExcel = ReadExcel.readExcel(target);
    //以上部分是做excel读取
    Workbook book = new SXSSFWorkbook();
    ServletOutputStream os = response.getOutputStream();
     book.write(os);
      

  4.   

     response.getOutputStream() 和response.getWriter()别放到一个请求里,改代码吧
      

  5.   

    http协议是一次请求一次响应,不可能两次啊。
    将方法改为void,不要返回到jsp页面。