Я пытаюсь динамически генерировать графики с помощью JFreeChart в результате некоторых флажков, которые пользователь выбирает, но я не могу понять, как лучше всего получить сгенерированные наборы данных в форме диаграммы (у меня есть код, который делает диаграммы из них, но нужно создавать png) и в виде JSP. В настоящее время я могу думать только о отправке наборов данных в JSP, но не могу придумать, что делать дальше ... Как сделать так, чтобы: пользователь передавал форму сервлету, сервлет генерировал наборы данных, диаграммы, созданные из наборов данных , pngs из диаграмм и, наконец, pngs отправлены в jsp? Или что-то вдоль этих линий.Динамически генерировать JFreeChart в сервлет
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);
}
ОБНОВЛЕНИЕ:
Имея метод doPost генерировать наборы данных из пользовательского поста, они могут быть сохранены в полях, впоследствии RequestDispatcher направляет пользователя к JSP, который затем вызывает метод doGet сервлета в теге img, который использует данные, хранящиеся ранее в полях, для создания png и затем отображается HTML в JSP.
Похоже, ваше решение будет перерыв, как только два пользователя с помощью своей страницы в то же время - небезопасно хранить что-либо в полях класса сервлета! –
ах, хорошо - есть ли способ достичь того же? – Robert
Простым решением является объект HttpSession. HttpSession session = request.getSession(); а затем session.setAttribute («результаты», результаты); в форме сервлета и session.getAttribute («результаты») в сервлете диаграммы. –