Sto provando a generare grafici dinamicamente utilizzando JFreeChart come risultato di alcune caselle di controllo selezionate dall'utente, ma non riesco a capire come ottenere i set di dati generati in forma di grafico (ho codice che crea grafici da questi, ma è necessario produrre png) e nella vista JSP. Attualmente, posso solo pensare di inviare i Dataset al JSP, ma non posso pensare a cosa fare da lì ... Come faccio a fare in modo che: l'utente invii il form al servlet, il servlet generi i dataset, i diagrammi prodotti dai dataset , png dalle classifiche e infine i png spediti a jsp? O qualcosa del genere.Generazione dinamica di JFreeChart nel 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:
Avendo il metodo doPost generare i set di dati dal palo utente, che può quindi essere memorizzato nei campi, successivamente il RequestDispatcher inoltra l'utente al JSP che poi chiama il metodo doGet del servlet in un tag img, che utilizza i set di dati memorizzati precedentemente nei campi per produrre un png e che viene quindi visualizzato dall'HTML nel JSP.
Suona come la soluzione si romperà appena due utenti utilizzano la tua pagina, allo stesso tempo - Non è sicuro conservare nulla nei campi di una classe servlet! –
ah, ok - c'è un modo per ottenere la stessa cosa? – Robert
La soluzione facile è l'oggetto HttpSession. Fai HttpSession session = request.getSession(); e quindi session.setAttribute ("risultati", risultati); nel servlet del modulo e session.getAttribute ("results") nel servlet del grafico. –