【发布时间】:2009-08-10 15:55:16
【问题描述】:
由于用户选择了一些复选框,我正在尝试使用 JFreeChart 动态生成图表,但我无法弄清楚如何最好地将生成的数据集转换为图表形式(我有从这些生成图表的代码,但需要生成 png) 并进入 JSP 视图。目前,我只能考虑将数据集发送到 JSP,但想不出从那里做什么......我该如何做到:用户提交表单到 servlet,servlet 生成数据集,从数据集生成图表,来自图表的png,最后是发送到jsp的png?或者类似的东西。
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,然后在 img 标签中调用 servlet 的 doGet 方法,该标签使用存储的数据集在字段的前面生成一个 png,然后由 JSP 中的 HTML 显示。
【问题讨论】:
-
听起来您的解决方案会在两个用户同时使用您的页面时中断——在 servlet 类的字段中存储任何内容是不安全的!
-
啊,好的 - 有没有办法达到同样的效果?
-
简单的解决方案是 HttpSession 对象。做 HttpSession session = request.getSession();然后 session.setAttribute("results", results);在表单 servlet 中,以及在图表 servlet 中的 session.getAttribute("results")。
标签: java jsp servlets jfreechart