上QQ阅读APP看书,第一时间看更新
11.5 在网页中生成和显示图表
通过JFreeChart的ServletUtilities类可以将图片输出到Web服务器的临时目录下。并可以通过JFreeChart中提供的DisplayChartServlet来显示Web服务器临时目录下的图片。
11.5.1 生成统计图表
下面来看如何在网页中显示生成图表。这里选择直接在JSP页面中使用Java脚本代码生成统计图表,代码如下所示。
<%@ page language="java" import="java.util.*" pageEncoding="gb2312"%> <%@ page import="org.jfree.chart.ChartFactory, org.jfree.chart.JFreeChart, org.jfree.chart.plot.PlotOrientation, org.jfree.data.category.DefaultCategoryDataset, org.jfree.chart.servlet.*" %> <! DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>学校职称人员统计图</title> </head> <body> <% DefaultCategoryDataset dcd = new DefaultCategoryDataset(); //设置数据 dcd.setValue(800, "", "讲师"); dcd.setValue(400, "", "副教授"); dcd.setValue(100, "", "教授"); //使用工厂类创建柱状图 JFreeChart chart = ChartFactory.createBarChart( "学校职称人员统计图", "职称", "人员数量", dcd, PlotOrientation.VERTICAL , false, true, false); //保存生成的图表 String fileName = ServletUtilities.saveChartAsPNG(chart,800,600, session); %> </body> </html>
这里使用ServletUtilities类的saveChartAsPNG方法来输出图片文件。ServletUtilities类会将图片输出到Web服务器的临时目录下,如Tomcat的临时目录为根目录下的temp目录。而且ServletUtilities类会自动给图片文件命名,并将文件的名称以返回值的方式返回,方便显示时调用。
运行该JSP页面可以看到在Tomcat的临时目录下生成了图表文件,如图11.24所示。
图11.24 Tomcat的临时目录
11.5.2 显示统计图表
图片生成好了,下面来看如何显示该图表。JFreeChart中提供了一个DisplayChartServlet来显示Web服务器临时目录下的图片。为了使用该Servlet,首先需要在“web.xml”中配置该Servlet,代码如下所示。
<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>/DisplayChart</url-pattern> </servlet-mapping>
使用DisplayChart来显示统计图表图片时需要传入一个filename参数,该filename参数值为所需显示图片文件的文件名,代码如下所示。
<%@ page language="java" import="java.util.*" pageEncoding="gb2312"%>
<%@ page import="org.jfree.chart.ChartFactory, org.jfree.chart.JFreeChart,
org.jfree.chart.plot.PlotOrientation, org.jfree.data.category.DefaultCategoryDataset,
org.jfree.chart.servlet.*" %>
<! DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>学校职称人员统计图</title>
</head>
<body>
<%
...
...
String fileUrl ="DisplayChart? filename=" + fileName;
%>
<img src="<%= fileUrl%>" width="800" height="600"></img>
</body>
</html>
运行该JSP页面可以看到在页面中显示出了统计图表,如图11.25所示。
图11.25 在网页中显示图表