本人是Java菜鸟,最近接触JFreeChart,做一下学习总结,与各位分享,有哪里不对劲的,请各位前辈指出来方便我的学习,thx!
JFreeChart的官网:http://www.jfree.org/jfreechart/
官网里面有很多详细的介绍,以及相关的技术文档!此次用的JFreeChart版本是jfreechart-1.0.19:http://sourceforge.net/projects/jfreechart/files/,用到的jar包如图两个:
然后用到的Struts2的版本为struts-2.3.20:http://struts.apache.org/download.cgi#struts216,其中除了平时用于struts2开发的jar包外,还需要用到struts2下的用于支持JFreeChart的jar包:struts2-jfreechart-plugin-2.3.20.jar,总体上我加入到项目中的jar包如下图:
,基本的环境搭建完成。
1、依次新建、编辑web.xml、struts.xml、struts.properties和struts-jfreechart.xml几个配置文件,
具体代码如下:
a、web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
<display-name>JFreeChart_demo</display-name>
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
</web-app>
b、struts.xml
<?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>
<include file="struts-jfreechart.xml" />
</struts>
c、struts.properties
struts.ui.theme=simple
d、struts-jfreechart.xml
对于该文件要说明一下:文件中已经直接调用写好的ChartResult类(该类是继承了com.opensymphony.xwork2.Result),在这里只需要传入生成图片大小的参数width和height就OK了。
<?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="jFreeChartDemonstration" extends="struts-default"
namespace="/jc">
<result-types>
<result-type name="chart" class="org.apache.struts2.dispatcher.ChartResult"></result-type>
</result-types>
<action name="piechart" class="com.study.jfreechart.JFreeChartAction">
<result type="chart">
<param name="width">400</param>
<param name="height">300</param>
</result>
</action>
</package>
</struts>
2、新建JFreeChartAction继承ActionSupport。代码如下:
package com.study.jfreechart;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.JFreeChart;
import org.jfree.data.general.DefaultPieDataset;
import com.opensymphony.xwork2.ActionSupport;
/**
* @author 砍柴人
*
* 新建JFreeChartAction继承ActionSupport,
* 生成JFreeChart对象并保存到chart中,
* 注意这个名称是固定的。
*/
public class JFreeChartAction extends ActionSupport {
private static final long serialVersionUID = 1L;
//供ChartResult调用->ActionInvocation.getStack().findValue("chart")
private JFreeChart chart;
@Override
public String execute() throws Exception {
//生成JFreeChart对象
chart = ChartFactory.createPieChart(
"Pie Chart",//图表表题
setData(),//数据
true, //是否显示图例
true, //是否显示工具提示
false //是否生成url
);
return SUCCESS;
}
public DefaultPieDataset setData(){
//设置数据
DefaultPieDataset data = new DefaultPieDataset();
data.setValue("Java", new Double(43.2));
data.setValue("PHP", new Double(20.0));
data.setValue("C/C++", new Double(17.5));
data.setValue(".Net", new Double(40.0));
return data;
}
public JFreeChart getChart() {
return chart;
}
public void setChart(JFreeChart chart) {
this.chart = chart;
}
}
3、通过新建JFreeChart.jsp页面,访问action。具体代码如下:
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>jfreechart</title>
</head>
<body>
<img alt="jfreechart" src="jc/piechart.action">
</body>
</html>
运行例子,访问JFreeChart.jsp,结果显示如下:
这只是个简单的饼状图例子,其中还有很多显示样式可以设置,比如背景色、显示百分比。通过这个例子,练习一下JFreeChart在Struts2下的应用!