需要用到的包:
jfreechart-1.0.5.jar
jcommon-1.0.9.jar
实现代码:
@Namespace("/Test")
public class Test extends ActionSupport{
@Action(value = "bing")
public String bing() {
HttpServletResponse response=ServletActionContext.getResponse();
response.setContentType("image/png");
//饼图
PieDataset dataset=createPieDataset();
JFreeChart jfreechart=ChartFactory.createPieChart3D("图书销售比例", dataset,true , true, true);
//PiePlot plot=(PiePlot) jfreechart.getPlot();
ChartUtilities.writeChartAsPNG(response.getOutputStream(),jfreechart,400,300);
//也可以保存到本地硬盘
ChartUtilities.saveChartAsPNG(new File("e:\\chart.png"), jfreechart, 400, 300);}
@Action(value ="bar")
public String bar() {
HttpServletResponse response=ServletActionContext.getResponse();
response.setContentType("image/png");
//柱状图
CategoryDataset categorydataset=createCategoryDataset();
JFreeChart jfreechart2=ChartFactory.createBarChart3D("08年水果销售量", "按季度", "销量", categorydataset, PlotOrientation.VERTICAL, true, true, false);
CategoryPlot catplot=(CategoryPlot) jfreechart2.getPlot();
ChartUtilities.writeChartAsPNG(response.getOutputStream(),jfreechart2,400,300); }
public PieDataset createPieDataset(){
Random random=new Random();
DefaultPieDataset dataset=new DefaultPieDataset();
dataset.setValue("计算机", random.nextInt(100));
dataset.setValue("英语", random.nextInt(100));
dataset.setValue("数学", random.nextInt(100));
return dataset;
}
public CategoryDataset createCategoryDataset(){
Random random=new Random();
String [] category1={"第一季度","第二季度","第三季度","第四季度"};
String [] category2={"苹果","荔枝","葡萄"};
DefaultCategoryDataset defaultdataset=new DefaultCategoryDataset();
for(int i=0;i<category1.length;i++){
String cat1=category1[i];
for(int j=0;j<category2.length;j++){
String cat2=category2[j];
defaultdataset.addValue(random.nextInt(100),cat2,cat1);
}
}
return defaultdataset;
}
}
显示可以直接在界面输入它的action地址显示,也可以把它固定在jsp页面通过img标签显示:
<script src="<%=request.getContextPath()%>/js/jquery-1.6.2.min.js" type="text/javascript"></script>
<script language="javascript">
$(document).ready(function() {
$("#se").change(function(){
var chart = $("#se").val();
if(chart == "1"){
$("#zz").hide();
$("#bb").show();
}
if(chart == "2"){
$("#bb").hide();
$("#zz").show();
}
if(chart ==""){
$("#bb").hide();
$("#zz").hide();
}
});
});
</script>
</head>
<body>
<select id="se">
<option value=""></option>
<option value="1">饼图
<option value="2">柱状图
</select>
<div style="display: none" id="bb">
<img src="<%=basePath%>/Test/bing.action"/>
</div>
<div style="display: none" id="zz">
<img src="<%=basePath%>/Test/bar.action"/>
</div>
</body>