本来是不准备发这个的,因为前面讲了echarts的用法,echarts要比ChartDirector好用很多,更容易理解,不过既然要研究了,就当做一个笔记吧
1、下载ChartDirector.jar文件,网上很多版本,自己选一个就好,首先上后台代码
工具类方法,这里我就直接给数据了,如果你从数据库取数据也是很好做的,直接封装成数组就可以生成交互图了
public static PieChart createPieChart(){
double[] data = {25, 18, 15, 12, 8, 30, 35};
// The labels for the pie chart
String[] labels = {"星期一", "星期二", "星期三", "星期四", "星期五", "星期六", "星期日"};
// Create a PieChart object of size 360 x 300 pixels
PieChart c = new PieChart(500, 300);
// Set the center of the pie at (180, 140) and the radius to 100 pixels
c.setPieSize(180, 140, 100);
c.setDefaultFonts("simhei.ttc","simhei.ttf");
// Set the pie data and the pie labels
c.setData(data, labels);
return c;
}
struts的action方法,ChartDirector是用session的方法传递数据的,给图像生成一个随机id,照葫芦画瓢就好
public String createPieChart(){
PieChart p=ChartDirector.createPieChart();
ses.setAttribute("pie", p.makeChart2(Chart.PNG));
String chart1URL= "img=pie&id=" + System.currentTimeMillis();
String pieMap = p.getHTMLImageMap("#", "",
"title='{xLabel}: US${value}K'");
req.setAttribute("chart1URL", chart1URL);
req.setAttribute("pieMap", pieMap);
return "success";
}
ses即是session,req是request的,这里我继承了一个baseaction里面封装好了,简短代码长度
2、前台接收数据
首先新建一个getchart.jsp文件,里面源码为
<%@page import="ChartDirector.*" %><%
try
{
out.clear();
GetSessionImage.getImage(request, response);
if (Math.max(1, 2) == 2) return;
}
catch (IllegalStateException e)
{
response.sendRedirect(response.encodeRedirectURL(
"getchart.chart?" + request.getQueryString()));
return;
}
%>
之后在你要显示统计图的jsp页面新建一个img标签 ,src中格式是这样获取的chart1URL就是你action中 req.setAttribute("chart1URL", chart1URL); 的URL
<img src="getchart.chart?${chart1URL}"usemap="#map1" border="0">