JFreeChart输出饼状图示例。[jdk1.6,web项目]
1。把jcommon-1.0.17.jar,jfreechart-1.0.14.jar放在WEB-INF\lib目录下
2。编辑web.xml文件。
<servlet>
<servlet-name>pieChartServlet</servlet-name>
<servlet-class>com.pie.chart.PieChartServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>pieChartServlet</servlet-name>
<url-pattern>/pieChart</url-pattern>
</servlet-mapping>
3。编写代码。
package com.pie.chart;
import java.awt.Font;
import java.io.File;
import java.io.IOException;import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartUtilities;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.plot.PiePlot;
import org.jfree.data.general.DefaultPieDataset;
import org.jfree.data.general.PieDataset;public class PieChartServlet extends HttpServlet {
/**
*
*/
private static final long serialVersionUID = -7508218541450323029L;@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
resp.setCharacterEncoding("utf-8");
resp.setContentType("image/png;charset=utf-8");
PieDataset dataset = this.createPieDataset();
// PieDataset dataset = null;
JFreeChart jfreeChart = ChartFactory.createPieChart3D("2012年图书销售统计", dataset, true, true,false);
//获得图表区域对象
PiePlot piePlot = (PiePlot) jfreeChart.getPlot();
//设置标签字体
piePlot.setLabelFont(new Font("宋体",Font.BOLD,12));
piePlot.setNoDataMessage("没有显示的数据");
piePlot.setCircular(false);//设置不是椭圆
piePlot.setLabelGap(0.02D);
//输出到页面
ChartUtilities.writeChartAsPNG(resp.getOutputStream(), jfreeChart, 300, 300);
//保存到磁盘文件
ChartUtilities.saveChartAsPNG(new File("I:\\pieChart.png"), jfreeChart, 300, 300);
}
private PieDataset createPieDataset() {
// TODO Auto-generated method stub
DefaultPieDataset dataset = new DefaultPieDataset();
dataset.setValue("java", Math.random());
dataset.setValue("C++", Math.random());
dataset.setValue("VB", Math.random());
dataset.setValue("android", Math.random());
dataset.setValue("iphone", Math.random());
return dataset;
}@Override
浏览器访问 http://localhost:9080/chart/pieChart 就可以输出饼状图到浏览器,并保存到硬盘。
protected void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
// TODO Auto-generated method stub
this.doGet(req, resp);
}
}