零基础学Struts
上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 在网页中显示图表