我正在获取java.lang.IllegalStateException:getOutputStream()已为此响应异常调用

我正在获取java.lang.IllegalStateException:getOutputStream()已为此响应异常调用,java,servlets,Java,Servlets,java.lang.IllegalStateException:已为此响应调用getOutputStream() 嗨,我在试图通过java代码打开pdf文件时遇到了上述异常 这是我的Java代码。我正在使用IText创建pdf @RequestMapping(value=“/pdf”,method=RequestMethod.POST) 公共字符串pdf(活动窗体活动窗体、模型、, HttpSession会话,HttpServletResponse响应)引发InstanceNotFoundExc

java.lang.IllegalStateException:已为此响应调用getOutputStream()

嗨,我在试图通过java代码打开pdf文件时遇到了上述异常

这是我的Java代码。我正在使用IText创建pdf

@RequestMapping(value=“/pdf”,method=RequestMethod.POST)
公共字符串pdf(活动窗体活动窗体、模型、,
HttpSession会话,HttpServletResponse响应)引发InstanceNotFoundException,IOException,
文档例外{
字符串路径=“/home/space/workspace/training/training/Performance.pdf”;
//第一步
文档=新文档();
//步骤2
FileOutputStream fos=新的FileOutputStream(路径);
PdfWriter.getInstance(文档,fos);
//步骤3
document.open();
//步骤4
PDFP表格;
表=新的PDFP表(3);
表1.设定宽度百分比(100);
PDFP细胞;
单元=新的PdfPCell(新短语(“卷号”);
cell.setColspan(1);
//单元格顺序(矩形,无边框);
表2.addCell(cell);
cell=新的PdfPCell(新短语(“名称”));
cell.setColspan(1);
//单元格顺序(矩形,无边框);
表2.addCell(cell);
cell=新的PdfPCell(新短语(“性能”));
cell.setColspan(1);
//单元格顺序(矩形,无边框);
表2.addCell(cell);
整数计数=rollService.getRollCount();
整数countpts=creditptsService.getptscont();
如果(countpts!=null){

对于(整数i=1;i您完全用java代码处理请求,然后Spring/container的功能开始尝试通过呈现一些jsp来处理相同的请求。在这种特殊情况下,您需要禁用此功能。

正如您在堆栈跟踪中看到的,jsp调用response.getWriter(),但异常消息表示之前调用过response.getOutputStream()。不能在同一响应对象上同时调用这两个方法

查看以下链接:


在try/catch的末尾添加以下内容,以避免JSP引擎通过getWriter()刷新响应时出现错误

这不是最佳实践,但它可以避免日志中的错误。
理想情况下,我们应该在Servlet中而不是在JSP中执行此操作。如果您在JSP中仍然需要它,请按照上面的代码来消除错误。

您可以发布完整的
异常
,包括堆栈跟踪,并在代码中标记异常发生的位置吗?@UwePlonus:Exception发生在我单击请求pdf文件的按钮时。ic一个“仍可见”对话框,询问是否打开或保存文档。您不应调用
os.close()
输出流上
你不是自己创建的。有帮助吗?@LaurentG:没有,没有帮助我仍然得到异常。你的方法返回
字符串
,但我没有看到任何返回语句?如果你返回字符串,它将用于解析JSP视图。你必须自己在
输出流上写,或者返回一个JSP视图,但不是两者都返回。我已经阅读了那些链接,他们说您需要将代码从JSP移动到servlet。我在Town在java文件中实现我的代码之前已经参考了这些链接,但是没有用。然后检查这个链接。我想类似的问题
java.lang.IllegalStateException: getOutputStream() has already been called for this response
at org.apache.catalina.connector.Response.getWriter(Response.java:633)
at org.apache.catalina.connector.ResponseFacade.getWriter(ResponseFacade.java:214)
at javax.servlet.ServletResponseWrapper.getWriter(ServletResponseWrapper.java:105)
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.JspWriterImpl.write(JspWriterImpl.java:336)
at org.apache.jasper.runtime.JspWriterImpl.write(JspWriterImpl.java:353)
at org.apache.jsp.jsp.activity_jsp._jspService(activity_jsp.java:402)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:432)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:684)
at org.apache.catalina.core.ApplicationDispatcher.doInclude(ApplicationDispatcher.java:593)
at org.apache.catalina.core.ApplicationDispatcher.include(ApplicationDispatcher.java:530)
at org.springframework.web.servlet.view.InternalResourceView.renderMergedOutputModel(InternalResourceView.java:229)
at org.springframework.web.servlet.view.AbstractView.render(AbstractView.java:262)
at org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1265)
at org.springframework.web.servlet.DispatcherServlet.processDispatchResult(DispatcherServlet.java:1016)
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:965)
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:859)
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:883)
at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:792)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:641)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:224)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:169)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:928)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:987)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:539)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:298)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
at java.lang.Thread.run(Thread.java:722)
out.clear(); // where out is a JspWriter
out = pageContext.pushBody();