首先,对不起,如果这个问题已经被问过,我见过很多类似的问题,但没有一个给我一个有用的答案。
我正在使用Struts,我想将一个映像下载到一个img标记中。我在应用程序的其他地方使用了它,并且工作得很好,但是在其中一个地方,操作抛出了IllegalStateException。这是一个登录页面,没什么特别的。这是引发异常的操作中的代码:
public String mappingExecute(ActionForm form, HttpServletRequest request,
HttpServletResponse response) throws Exception {
OutputStream out = response.getOutputStream();
String idDocumento = request.getParameter("idDocumento");
FileResponse fResponse = WebConfig.getFileManager().downloadFile(idDocumento);
byte[] buffer = fResponse.getFileByteArray();
out.write(buffer);
out.close();
return null;
}
这是个例外:
java.lang.IllegalStateException: getWriter() has already been called for this response
at org.apache.catalina.connector.Response.getOutputStream(Response.java:580)
at org.apache.catalina.connector.ResponseFacade.getOutputStream(ResponseFacade.java:183)
at net.bilbao.dxd.web.SrvDownloadFile.mappingExecute(SrvDownloadFile.java:22)
at net.bilbao.dxd.web.SrvAction.execute(SrvAction.java:56)
at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:421)
at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:226)
at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1164)
at org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:397)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:861)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:606)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
at java.lang.Thread.run(Unknown Source)
(SrvDownloadFile是我的操作类的名称,在Response.GetOutputStream()
处引发异常)
这里是奇怪的部分:当我登录时,下一个jsp调用相同的操作,并且图像显示fine。当我返回到登录页面,然后图像显示也很好!此异常仅在您第一次转到登录页面时抛出。在我的操作调用getwriter()
之前,我可以做些什么来检查它被调用的位置吗?
也许在登录操作中,您正在转发响应,而当控件到达行时,响应已经发送,这就是异常告诉您的。在其他情况下,可能没有调用此登录操作,因此它可以按照预期工作。
我得到了已为此响应调用。。即使我没有呼叫在try或catch块中,我也没有在我的servlet代码中使用。。。 这是我的代码... 异常堆栈跟踪是...............
我正在用Spring做一个项目,我有这个问题,我谷歌了错误信息,我找到了解决方案,甚至所有关于这个问题的帖子 有人能帮忙吗?
问题内容: 我谷歌的错误消息 ,很多人说,这是因为后面的空格或换行,但在我的代码,没有一个空格或一个换行符。我在Linux上使用tomcat6。 根本原因 问题答案: 好的,你应该使用servlet而不是JSP,但是如果你确实需要…在页面顶部添加以下指令: 或者在jsp-config部分中,你的web.xml 此外flush/ close中OutputStream和返回完成时。
我正在尝试使用以下代码段在浏览器中打开pdf文件: 我收到以下错误: 我还尝试使用以下方式关闭: 有人能帮我吗?
我有一个包含表的JSP页面。加载页面时,将填充表。我还有一个每隔X秒的ajax调用,它必须刷新表内容。 加载时,按预期填充内容。但在ajax调用期间,它会失败,并出现以下错误: 我检查了这个问题上存在的问题,但没有什么好结果。我没有在代码中使用scriplets。 JSP代码: 控制器代码: