Rob*_*ert 5 java jsp servlets jfreechart
我正在尝试使用JFreeChart动态生成图形作为用户选择的一些复选框的结果,但我无法弄清楚如何最好地将生成的数据集转换为图表形式(我有代码从这些生成图表,但需要生成pngs)并进入JSP视图.目前,我只能考虑将数据集发送到JSP,但不能想到从那里做什么...我如何做到这一点:用户将表单提交给servlet,servlet生成数据集,从数据集生成的图表,pngs从图表和最后的pngs派遣到jsp?或类似的规定.
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);
}
Run Code Online (Sandbox Code Playgroud)
更新:
通过让doPost方法从用户帖子生成数据集,然后可以将它们存储在字段中,随后RequestDispatcher将用户转发到JSP,然后在img标记中调用servlet的doGet方法,该标记使用之前存储的数据集.用于生成png的字段,然后由JSP中的HTML显示.
我建议你使用ServletUtilities类.它保存在java tempdir中,并在会话失效时进行清理.:)然后显示文件的另一个提示是使用DisplayChart servlet来获取图像.这是在web.xml中
<servlet>
<servlet-name>DisplayChart</servlet-name>
<servlet-class>org.jfree.chart.servlet.DisplayChart</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>DisplayChart</servlet-name>
<url-pattern>/servlet/DisplayChart</url-pattern>
</servlet-mapping>
Run Code Online (Sandbox Code Playgroud)
这是使用jstl显示图像的方式:
<img src="<c:url value='/servlet/DisplayChart?'><c:param name='filename' value='${yourFileNameHERE}' /></c:url>" alt=""/>
Run Code Online (Sandbox Code Playgroud)
让您的 JSP 文件包含一个标记,其中 src 属性是您的 servlet 的名称。然后,您只需让 servlet 返回 PNG 图表即可:
OutputStream out = response.getOutputStream();
response.setContentType("image/png");
ChartUtilities.writeChartAsPNG(out, chart, width, height);
Run Code Online (Sandbox Code Playgroud)
JSP 页面实际上仅用于输出 HTML 或其他文本数据。尽管您可以强制 JSP 输出 PNG,但这样做没有任何好处。
听起来您想创建一个根据下拉菜单状态更改进行更新的动态页面。为此,您需要使用在菜单更改时触发的 Javascript,并更新 img 标签的 src 属性的值。然后浏览器将从您的 servlet 中重新加载带有新图表的图像。
| 归档时间: |
|
| 查看次数: |
9878 次 |
| 最近记录: |