Necesito mostrar en una JSP un grafico utilizando JFreeChart, para ello hice inicialmente un servlet:
Código:
Entonce en el codigo de la jsp seria,<servlet-mapping><servlet-name>ServletGraficoBarraMultiple</servlet-name><url-pattern>/ServletGraficoBarraMultiple</url-pattern></servletmapping> <servlet><servlet-name>ServletGraficoBarraMultiple</servlet-name><servlet-class>bw_co_ServletGraficoBarraMultiple</servlet-class></servlet>
Código HTML:
<script>[INDENT] function createXMLHttp(){ try{ xmlHttp = new ActiveXObject("Msxml2.XMLHTTP"); }catch(e){ try{ xmlHttp = new ActiveXObject("Microsoft.XMLHTTP"); }catch(oc){ xmlHttp = false; } } if (!xmlHttp && typeof XMLHttpRequest != "undefined"){ try{ xmlHttp = new XMLHttpRequest(); }catch (E){ xmlHttp=false; } } return xmlHttp; } function envioInfo (){ //Creamos el objeto xmlHttpRequest alert("Creamos el objeto xmlHttp"); createXMLHttp(); //Definimos la llamada para POST alert("Definimos la llamada para POST"); var info = document.forms['formularioDiv2'].graficoMens.src; //Marcar que función manejará la respuesta xmlHttp.open("POST","ServletGraficoBarraMultiple",true); alert("Marcamos la función que maneja la respuesta"); xmlHttp.onreadystatechange = recogeInfo; //Enviar alert("enviamos los datos"); xmlHttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=ISO-8859-1'); xmlHttp.send(info); } function recogeInfo(){ alert(xmlHttp.readyState + " " + xmlHttp.status); if (xmlHttp.readyState == 4){ document.getElementById("div1").innerHTML=xmlHttp.responseText; //document.forms['formularioDiv2'].graficoMens.src=+xmlHttp.responseStream+"'"; alert(xmlHttp.responseText); } } [/INDENT]</script> <body onLoad="javascript:envioInfo();"> .... <div id="div1">[INDENT]<img src="ServletGraficoBarraMultiple?datos=.....">[/INDENT]</div> .... </body>
Código:
Comentaros que el método writeChartAsPNG pinta la imagen a través del OutputStream que se le pasa como parametro "out".public class bw_co_ServletGraficoBarraMultiple extends HttpServlet{public void doPost(HttpServletRequest req, HttpServletResponse res){{//recogemos los parametros de la request //Creamos el graficoBarras graficoBarras = ChartFactory.createBarChart3D(titulo, tituloX, tituloY, dataset, vertical, true, true, false); try{}OutputStream out = res.getOutputStream(); ChartUtilities.writeChartAsPNG(out,graficoBarras,ancho,alto); out.flush(); out.close();}catch(Exception e){e.printstacktrace();}
Lo que yo no se es como puedo hacer la función java script recogeInfo() para que me pinte lo que hago en la clase Java bw_co_ServletGraficoBarrasMultiple.
Gracias y un saludo.