jFreeChart 在jsp页上实现简单的折线图、柱状图
可参考资料与网址
?
官方网站
http://www.jfree.org/jfreechart/index.html
官方论坛
http://www.jfree.org/phpBB2/index.php
API 文档
http://www.jfree.org/jfreechart/api/gjdoc/index.html
中文API
http://blog.sina.com.cn/u/405da78d010000ap
?
?创建柱状图
1 引入jFreechart的包 :jcommon-1.0.15.jar 、jfreechart-1.0.12.jar
2 在web.xml中加入
<servlet> <servlet-name>DisplayChart</servlet-name> <servlet-class> org.jfree.chart.servlet.DisplayChart </servlet-class> </servlet> <servlet-mapping> <servlet-name>DisplayChart</servlet-name> <url-pattern>/servlet/DisplayChart</url-pattern> </servlet-mapping>
3 在jsp或者servlet或者action中写
// 饼图//1、准备数据DefaultPieDataset dataset = new DefaultPieDataset();dataset.setValue("管理人员", 25);dataset.setValue("市场人员", 25);dataset.setValue("开发人员", 45);dataset.setValue("其他人员", 5);//2、生成图片JFreeChart chart = ChartFactory.createPieChart3D("公司组织架构图", dataset, true,true, false);try{ String filename = ServletUtilities.saveChartAsPNG(chart, 500, 300, null, request.getSession()); String graphURL = request.getContextPath() + "/servlet/DisplayChart?filename=" + filename;request.setAttribute("graphURL",graphURL);} catch (Exception e){}?
4 在页面引入
<img src="<%= request.getAttribute("graphURL") %>"> 对于临时文件的清除,jfreechart提供了一个实现了HttpSessionBindingListener的类ChartDeleter,
里面有个valueUnbound方法,这个方法是在session执行remove的时候被执行,
也就是在页面刚进入的时候调用
session.removeAttribute("JFreeChart_Deleter");这样会删除当前session之前生成的图表。
还有一种方法是用流输出的方式,直接,即:
注释掉上面的try中的代码,加入如下代码
ChartUtilities.writeChartAsJPEG(response.getOutputStream(),chart,500,300);
然后在显示页面引入
<img src="<%=request.getContextPath()%>/servlet">
?
?
?