零基础学Struts
上QQ阅读APP看书,第一时间看更新

11.6 Struts 2整合开发

Struts 2提供了JFreeChart插件支持,借助于该插件,Struts 2可以非常方便和容易地使用JFreeChart生成并显示统计图表。

11.6.1 安装JFreeChart插件

JFreeChart插件位于struts-2.0.11.1下的lib目录下。只需将该插件复制到Web应用下的WEB-INF\lib目录下就可以了。但是检查到这里有一个小小的错误,就是该插件下的“struts-plugin.xml”文件中的配置有些问题,代码如下所示。

        <! DOCTYPE struts PUBLIC
            "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
            "http://struts.apache.org/dtds/struts-2.0.dtd">
        <struts>
              <package name="jfreechart-default">
              <result-types>
                    <result-type name="chart" class="org.apache.struts2.dispatcher.ChartResult">
                        <param name="height">150</param>
                        <param name="width">200</param>
                    </result-type>
            </result-types>
            </package>
        </struts>

从“struts-plugin.xml”配置文件中可以看出,其定义了一个包jfreechart-default,但是该包没有去继承struts-default。所以需要手动修改使得该jfreechart-default包继承Struts 2原有的默认包struts-default,代码如下所示。

        <! DOCTYPE struts PUBLIC
            "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
            "http://struts.apache.org/dtds/struts-2.0.dtd">
        <struts>
            <package name="jfreechart-default">
            <result-types>
                    <result-type name="chart" class="org.apache.struts2.dispatcher.ChartResult">
                        <param name="height">150</param>
                        <param name="width">200</param>
                    </result-type>
            </result-types>
            </package>
        </struts>

修改完成后,将该插件解压出的文件夹重新打包成JAR,将其复制到Web应用下的WEB-INF\lib目录中。新建的包如果继承该jfreechart-default包,也就同样继承了Struts 2原有的默认包struts-default,这样就可以直接使用该默认包下定义好的资源了。

11.6.2 创建Action

安装好JFreeChart插件后,就可以在Struts 2中生成图表了。首先新建一个Action,在该Action中必须添加一个JFreeChart类型的属性,其属性名为chart,并为该属性添加setter和getter方法。在getChart()方法中添加创建该图表实例的代码,代码如下所示。

        package net.hncu.action;
        import org.jfree.chart.ChartFactory;
        import org.jfree.chart.JFreeChart;
        import org.jfree.chart.plot.PlotOrientation;
        import org.jfree.data.category.DefaultCategoryDataset;
        import com.opensymphony.xwork2.ActionSupport;
        public class ShowChartAction extends ActionSupport {
              private JFreeChart chart;
              public JFreeChart getChart() {
                    DefaultCategoryDataset dcd = new DefaultCategoryDataset();
                    //设置数据
                    dcd.setValue(800, "", "讲师");
                    dcd.setValue(400, "", "副教授");
                    dcd.setValue(100, "", "教授");
                            //使用工厂类创建柱状图
                    JFreeChart chart = ChartFactory.createBarChart(
                              "学校职称人员统计图",
                              "职称",
                              "人员数量",
                              dcd,
                              PlotOrientation.VERTICAL ,
                              false,
                              true,
                              false);
                    return chart;
              }
              public void setChart(JFreeChart chart) {
                    this.chart = chart;
              }
              public String execute() throws Exception {
                    return SUCCESS;
            }
        }

11.6.3 配置Action

配置该Action非常简单,只需为该Action指定一个类型为chart的Result。同时也可以为该Result指定两个参数:width和height,分别用来设置统计图的宽和高,代码如下所示。

        <? xml version="1.0" encoding="UTF-8" ? >
        <! DOCTYPE struts PUBLIC
            "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
            "http://struts.apache.org/dtds/struts-2.0.dtd">
          <struts>
              <package name="struts2" extends="jfreechart-default">
                  <action name="showChart" class="net.hncu.action.ShowChartAction">
                        <result name="success" type="chart">
                              <param name="width">800</param>
                              <param name="height">600</param>
                        </result>
              </action>
            </package>
          </struts>

配置完该Action后,就可以生成统计图表了。打开浏览器,运行showChart.action。这时可以看到生成的统计图表,如图11.26所示。

图11.26 在网页中显示图表