MySQL DB에서 pdf를 다운로드하려고합니다. (필자는 Blob로 얻었고 모든 것이 잘 작동합니다.) 프로그래머가 충돌 할 때 ServletOutputstream을 클라이언트에 보내도록 시도하십시오.
AFAIK 메서드를 호출하기 전에 예외가 throw되거나 getwriter 메서드에 throw됩니다. 그러나 코드에서 getwriter 메서드를 사용하지 않습니다. 모든과 programm에있는 다른로 getOutputStream-방법에 도달하지 않습니다에서 (내가 확인을 주석).
Heres는 내 코드 snippe를
(즉, 어떤 이유로 중요한 경우에는 모든 일이 JSP에서 발생) t과 예외 :response.getOutputStream() 처음 호출 할 때 IllegalStateException을 throw합니다.
코드 그것은 참으로 문제가 당신이 JSP에서이 일을하고 있습니다
26.03.2013 09:28:29 org.apache.catalina.core.ApplicationDispatcher invoke
SCHWERWIEGEND: Servlet.service() for servlet jsp threw exception
java.lang.IllegalStateException
at org.apache.jasper.runtime.ServletResponseWrapperInclude.getOutputStream(ServletResponseWrapperInclude.java:63)
at org.apache.jsp.jsp.modules.Testszenario.PostReportResultOverview_jsp._jspService(PostReportResultOverview_jsp.java:115)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:374)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:342)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:267)
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.ApplicationDispatcher.invoke(ApplicationDispatcher.java:630)
at org.apache.catalina.core.ApplicationDispatcher.doInclude(ApplicationDispatcher.java:535)
at org.apache.catalina.core.ApplicationDispatcher.include(ApplicationDispatcher.java:472)
at org.apache.jasper.runtime.JspRuntimeLibrary.include(JspRuntimeLibrary.java:968)
at org.apache.jsp.jsp.McFrame_jsp._jspService(McFrame_jsp.java:284)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:374)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:342)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:267)
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:128)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:845)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
at java.lang.Thread.run(Thread.java:619)
맞습니다. 그것이 문제였습니다. 그러나 응답이 JSP 초기에 이미 커밋되었으므로 응답 버퍼에 내용을 변경하거나 아무것도 작성하기 전에 어떻게 변경할 수 있습니까? – olkoza
위의 대답을 참조하십시오. – NilsH
하지만 어떻게 가능합니까? 이 코드를 최소한으로 변경하더라도 : % <% @ page \t import = "com.nundp.util.ResourceHandler, java.util. *, java.io. *, java.sql.Blob"% > <% System.out.println ("start jsp :"+ response.isCommitted()); %> ' 응답이 이미 커밋 되었습니까? – olkoza