1. 创建一个struts工程
首先要搭建一个struts的工程,这里主要讲解jfreechart和struts的整合,struts项目的如何搭建这里不在
赘述;
2. copy struts2 jfreechart的插件
jfreechart是作为struts的一个插件形式和struts整合的,首先要把struts中关于jfreechar的插件包(struts2-jfreechart-plugin-2.3.14.jar)
导到struts的工程的lib目录下,这个文件在struts的lib包中可以找到,在这个jar包中就两个文件,一个配置文件struts-plugin.xml和一个java类文件
org.apache.struts2.dispatcher.ChartResult,这个类文件定义了一个结果集;在struts-plugin.xml配置了一个包和一个结果集,这个包
继承自struts-default
其内容如下:
<package name="jfreechart-default" extends="struts-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>
3. copy jfreechart的jar包
jfreechart是一个开源的矿建我们可以在他们的官网上下载
下载后解压找到其中的lib包,其中有两个jar包jcommon-1.0.17.jar和jfreechart-1.0.14.jar,将这两个jar包
拷贝到我们的工程的lib目录下,这样环境我们就搭建好了!
提醒:
在解压后的文件中有这么一个jar包,jfreechart-1.0.14-demo.jar,这里包裹全部jfreechart可以做的图形
demo,我们可以查看其中jfreechart能做出来的各种各样的图形,
打开windows的dos窗口将目录切换到jfreechart-1.0.14-demo.jar多在的目录,运行java命令执行这个文件
java -jar jfreechart-1.0.14-demo.jar
这样就可以打开这个jar文件
4. 接下来我们来做第一个demo
首先我们创建一个action
代码如下:
package app.jfreechat;
import java.awt.Font;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.title.TextTitle;
import org.jfree.data.general.DefaultPieDataset;
import org.jfree.data.general.PieDataset;
import com.opensymphony.xwork2.ActionSupport;
public class BookChart extends ActionSupport {
//声明与ChartResult结果类型的属性"chart",同类型、同名的属性
//java.lang.NullPointerException: No JFreeChart object found on the stack with name chart
private JFreeChart chart;
public PieDataset getDataset(){
DefaultPieDataset localDefaultPieDataset = new DefaultPieDataset();
localDefaultPieDataset.setValue("JAVA", 800000);
localDefaultPieDataset.setValue("PHP", 400000);
localDefaultPieDataset.setValue(".NET", 300000);
localDefaultPieDataset.setValue("C++", 200000);
localDefaultPieDataset.setValue("ANDROID", 1000000);
return localDefaultPieDataset;
}
public JFreeChart getChart() {
chart = ChartFactory.createPieChart3D(
"显示各学科情况图", //设置图形标题
getDataset(), //获取显示数据
false, //是否显示图例
true, //是否显示工具提示
false); //是否生成URL
//处理一下中文乱码问题
chart.setTitle(new TextTitle("显示各学科情况图",new java.awt.Font("宋体",Font.BOLD,22)));
return chart;
}
}
5. 配置struts.xml文件
<package name="default" namespace="/" extends="jfreechart-default">
<action name="bookAction" class="app.jfreemchar.action.BookCharAction">
<result name="success" type="chart">
<param name="height">600</param>
<param name="width">800</param>
</result>
</action>
</package>
注意:
这里的package必须继承jfreechart-default包,这样太能使用其中定义的结果集
在这里的result的type类型必须为chart,这样才能被jfreechart的结果集来对我们的action的结果进行进一步的处理
返回给mode层生成动态的网页相应给客户机
6. 在浏览器中输入 http://localhost/jfreechart/bookAction 这里jfreechart是你的项目的名字