Struts2整合JFreeChart

2014-11-24 10:11:54 · 作者: · 浏览: 1

材料:

(1) JFreeChart的jar包:jcommon-1.0.17.jar,jfreechart.jar,struts2-jfreechart-plugin-2.1.6.jar

(2) Struts2的jar 包,略

工具:Eclipse IDE,Server用tomcat好了

开始整合:

1. 首先新建Dynamic Web Project,并且整合上Struts2,具体jar包,配置等,不赘述。然后发布到tomcat,测试一下。顺便把JFreeChart的3个jar包也放入WEB-INF/lib下,会自动导入到project。

2. 创建一个Action类,ChartAction

[java]
package com.leon.action;

import javax.annotation.Resource;

import org.jfree.chart.JFreeChart;
import org.springframework.stereotype.Controller;

import com.leon.service.ChartService;
import com.opensymphony.xwork2.ActionSupport;

public class ChartAction extends ActionSupport {
private JFreeChart chart;

public String jfreeChart(){
this.chart = createChart();
return SUCCESS;
}

//setter and getter
public JFreeChart getChart() {
return chart;
}
public void setChart(JFreeChart chart) {
this.chart = chart;
}

}
说明:该Action类一定要定义一个成员变量,命名为chart,并且生成setter/getter,获得chart的Action方法中为chart变量创建引用的JFreeChart实例,来自方法createChart(),如下:
[java]
public JFreeChart createChart() {
double[][] data = new double[][] {{1320,720,830,400,1000,1500},{500,300,400,100,450,550}};
String[] rowKeys = {"佣金","奖金"};

String[] columnKeys = {"201201", "201202", "201203", "201204", "201205", "201206"};

CategoryDataset dataset = DatasetUtilities.createCategoryDataset(rowKeys, columnKeys, data);
JFreeChart chart = ChartFactory.createBarChart3D("2012上半年佣金",
"年月","金额",dataset,
PlotOrientation.VERTICAL,
true,
false,
false);

//设置标题字体,可以处理乱码问题
chart.getTitle().setFont(new Font("宋体", Font.BOLD,14));

CategoryPlot plot = chart.getCategoryPlot();

//X轴
CategoryAxis domainAxis = plot.getDomainAxis();
//设置设置X轴上的文字
domainAxis.setTickLabelFont(new Font("sans-serif", Font.PLAIN, 11));
//设置X轴的标题文字
domainAxis.setLabelFont(new Font("宋体", Font.PLAIN, 12));

//Y轴
ValueAxis numberaxis = plot.getRangeAxis();
//设置设置Y轴上的文字
numberaxis.setTickLabelFont(new Font("sans-serif", Font.PLAIN, 12));
//设置Y轴的标题文字
numberaxis.setLabelFont(new Font("宋体", Font.BOLD, 14));

//这句代码解决了底部汉字乱码的问题
chart.getLegend().setItemFont(new Font("宋体", Font.PLAIN, 12));

return chart;
}
实际项目运用中,这个产生chart的方法一般是不写在Action类中的,一般写在Service类中,让Action类调用。这边为了简单,就写在Action类中好了。关于JFreeChart的各种设置,格式等,也略去,网上很多,柱图也可以参考我的另一篇文章“Web工程采用JFreeChart作柱状图简单实例”。

3. struts2配置文件

[html]



400
700



说明:注意几点,package要继承jfreechart-default,这里只是一种配置方式;然后result的type是“chart”;然后就是高度,宽度了。

4. jsp页面

JSP页面很简单,就是标签:

[html]

需要注意的是src的值实际是一个action来的,因为我的struts2过滤器通配符为/*,所以这么写,有的可能是*.do什么的,就要写成jfreechart.do。