Estoy intentando generar gráficos dinámicamente utilizando JFreeChart como resultado de algunas casillas de verificación que el usuario selecciona, pero no puedo encontrar la mejor forma de obtener los conjuntos de datos generados en forma de gráfico (tengo un código que crea gráficos a partir de estos, pero necesita producir pngs) y en la vista JSP. Actualmente, solo puedo pensar en enviar los conjuntos de datos al JSP, pero no puedo pensar qué hacer a partir de ahí ... ¿Cómo hago para que el usuario envíe el formulario a servlet, el servlet genere conjuntos de datos, los gráficos producidos a partir de los conjuntos de datos , pngs de los charts y finalmente pngs enviados a jsp? O algo por el estilo.Genere dinámicamente JFreeChart en el servlet
public void doPost(HttpServletRequest request,
HttpServletResponse response)
throws IOException, ServletException{
String[] metrics = request.getParameterValues("metrics");
String[] fileNames = request.getParameterValues("files");
List<CategoryDataset> results = new ArrayList<CategoryDataset>();
DMCalc calculator = new DMCalc(metrics, fileNames);
calculator.calculateResults();
results.add(calculator.getEditDistanceDataset());
results.add(calculator.getSimilarityDataset());
results.add(calculator.getTimeChartDataset());
request.setAttribute("results", results);
RequestDispatcher view = request.getRequestDispatcher("metricResult.jsp");
view.forward(request, response);
}
UPDATE:
Al tener el método doPost generar los conjuntos de datos desde el puesto de usuario, que entonces se puede almacenar en los campos, posteriormente la RequestDispatcher reenvía al usuario de la JSP que luego llama al método doGet del servlet en una etiqueta img, que utiliza los conjuntos de datos almacenados anteriormente en los campos para producir un png y que luego se muestra por el HTML en el JSP.
Suena como su solución se romperá tan pronto como dos usuarios están utilizando la página a la vez - ¡no es seguro almacenar nada en los campos de una clase servlet! –
ah, está bien, ¿hay alguna manera de lograr lo mismo? – Robert
La solución fácil es el objeto HttpSession. Hacer HttpSession session = request.getSession(); y luego session.setAttribute ("resultados", resultados); en el formulario servlet, y session.getAttribute ("results") en el servlet del gráfico. –