getOutputStream() has already been called for this response的解决方法
??BufferedImage?image?=?new?BufferedImage(400,?400,?BufferedImage.TYPE_INT_RGB);
??Graphics?g?=?image.getGraphics();
??g.fillRect(0,0,400,400);
??g.setColor(new?Color(255,0,0));??
??g.fillArc(20,20,100,100,30,120);
??g.setColor(new?Color(0,255,0));
??g.fillArc(20,20,100,100,150,20);
??g.setColor(new?Color(0,0,255));
??g.fillArc(20,20,100,100,270,120);
??g.setColor(new?Color(0,0,0));
??g.drawString("red:climb"?,?300,?80);
??g.drawString("green:swim",?300,?120);
??g.drawString("blue:jump",?300,?160);
??ImageIO.write(image,?"bmp",?response.getOutputStream());
??//out.clear();
??//out?=?pageContext.pushBody();
%>
????at?org.apache.catalina.connector.Response.getWriter(Response.java:601)
????at?org.apache.catalina.connector.ResponseFacade.getWriter(ResponseFacade.java:196)
????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:185)
????at?org.apache.jasper.runtime.JspFactoryImpl.internalReleasePageContext(JspFactoryImpl.java:116)
????at?org.apache.jasper.runtime.JspFactoryImpl.releasePageContext(JspFactoryImpl.java:76)
????at?org.apache.jsp.pages.drawImage_jsp._jspService(drawImage_jsp.java:84)
????at?org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:98)
????at?javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
????at?org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:328)
????at?org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:315)
????at?org.apache.jasper.servlet.JspServlet.service(JspServlet.java:265)
????at?javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
????at?org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269)
????at?org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
????at?org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:210)
????at?org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:174)
????at?org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
????at?org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
????at?org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108)
????at?org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:151)
????at?org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:870)
????at?org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:665)
????at?org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:528)
????at?org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:81)
????at?org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:685)
????at?java.lang.Thread.run(Thread.java:595)
??public?void?_jspService(HttpServletRequest?request,?HttpServletResponse?response)
????????throws?java.io.IOException,?ServletException?{
????JspFactory?_jspxFactory?=?null;
????PageContext?pageContext?=?null;
????HttpSession?session?=?null;
????ServletContext?application?=?null;
????ServletConfig?config?=?null;
????JspWriter?out?=?null;
????Object?page?=?this;
????JspWriter?_jspx_out?=?null;
????PageContext?_jspx_page_context?=?null;

????try?{
??????_jspxFactory?=?JspFactory.getDefaultFactory();
??????response.setContentType("text/html;?charset=UTF-8");
??????pageContext?=?_jspxFactory.getPageContext(this,?request,?response,
??????????????????null,?true,?8192,?true);
??????_jspx_page_context?=?pageContext;
??????application?=?pageContext.getServletContext();
??????config?=?pageContext.getServletConfig();
??????session?=?pageContext.getSession();
??????out?=?pageContext.getOut();
??????_jspx_out?=?out;
??????out.write("\r\n");
??????out.write("\n");
??????out.write("<!DOCTYPE?html?PUBLIC?"-//W3C//DTD?HTML?4.01?Transitional//EN"?"http://www.w3.org/TR/html4/loose.dtd">\n");
??????out.write("<html>\n");
??????out.write("<head>\n");
??????out.write("<meta?http-equiv="Content-Type"?content="text/html;?charset=UTF-8">\n");
??????out.write("<title>Draw?Image</title>\n");
??????out.write("</head>\n");
??????out.write("<body>\n");
??????out.write("\r\n");
??BufferedImage?image?=?new?BufferedImage(400,?400,?BufferedImage.TYPE_INT_RGB);
??Graphics?g?=?image.getGraphics();
??g.fillRect(0,0,400,400);
??g.setColor(new?Color(255,0,0));??
??g.fillArc(20,20,100,100,30,120);
??g.setColor(new?Color(0,255,0));
??g.fillArc(20,20,100,100,150,20);
??g.setColor(new?Color(0,0,255));
??g.fillArc(20,20,100,100,270,120);
??g.setColor(new?Color(0,0,0));
??g.drawString("red:climb"?,?300,?80);
??g.drawString("green:swim",?300,?120);
??g.drawString("blue:jump",?300,?160);
??ImageIO.write(image,?"bmp",?response.getOutputStream());
??//out.clear();
??//out?=?pageContext.pushBody();
??????out.write("\r\n");
??????out.write("</body>\n");
??????out.write("</html>");
????}?catch?(Throwable?t)?{
??????if?(!(t?instanceof?SkipPageException)){
????????out?=?_jspx_out;
????????if?(out?!=?null?&&?out.getBufferSize()?!=?0)
??????????out.clearBuffer();
????????if?(_jspx_page_context?!=?null)?_jspx_page_context.handlePageException(t);
??????}
????}?finally?{
??????if?(_jspxFactory?!=?null)?_jspxFactory.releasePageContext(_jspx_page_context);
????}
??}public java.io.PrintWriter getWriter()throws java.io.IOExceptionReturns a?
PrintWriter?object that can send character text to the client. The?PrintWriter?uses the character encoding returned by?getCharacterEncoding(). If the response's character encoding has not been specified as described in?getCharacterEncoding?(i.e., the method just returns the default value?ISO-8859-1),?getWriter?updates it to?ISO-8859-1.Calling flush() on the?PrintWriter?commits the response.
Either this method or?getOutputStream()?may be called to write the body, not both.
?
Returns:a?PrintWriter?object that can return character data to the clientThrows:UnsupportedEncodingException?- if the character encoding returned by?getCharacterEncoding?cannot be usedjava.lang.IllegalStateException?- if the?getOutputStream?method has already been called for this response objectjava.io.IOException?- if an input or output exception occurredSee Also:getOutputStream(),?setCharacterEncoding(java.lang.String)如API所言,由于ServletResponse.getOutputStream()方法和该方法都有可能被调用,来输出JSP页面的内容,如果其中的一个方法被调用了,再调用另一个方法就会抛出异常。?
Returns:the new BodyContent·返回一个新的BodyContent(代表一个HTML页面的BODY部分内容)
·保存JspWriter实例的对象out
·更新PageContext的out属性的内容