本人研究jfreechart也有些日子了,网上入门的文章很多,可是比较深入的并不多。我也是从一两篇的入门文章开始的,后来就是全靠自己研究demo的源码。因为我做的多是基于B/S结构的,所以图片都是使用org.jfree.chart.servlet.DisplayChart这个类来显示的,我今天看了一下相关的源码,大致过程如下。
在网上的好多例子里,先是DisplayChart的service()方法调用ServletUtilities的saveChartAsPNG(JFreeChart chart, int width, int height,HttpSession session)方法,在这个过程里,saveChartAsPNG方法先生成临时文件的名字,然后调用org.jfree.chart.ChartUtilities的saveChartAsPNG(File file, JFreeChart chart,int width,int height,ChartRenderingInfo info,boolean encodeAlpha),在服务器的临时文件夹里生成图片,接下来是把图片文件与org.jfree.chart.servlet.ChartDeleter绑定(就是将图片文件名传递给这个类),ChartDeleter类继承了HttpSessionBindingListener接口,主要作用是当用户session失效的时候,删除临时文件夹里的图片,这个类是存在于session之中的。最后调用ServletUtilities的sendTempFile(File file, HttpServletResponse response,String mimeType)用输出流输出图片。
概括一下就是说,图片是存放于服务器的临时文件夹里,用户session失效后,程序会自动删除图片的。
网上看了好久,有很多人问关于jfreechart的问题,可是问的多,答的少,好不容易有一个论坛专门讨论jfreechart的事情,可惜没有人气,如果有可能的话,我会把我的一些积累和大家分享,希望能够聚起更多热爱jfreechart的朋友!
本文地址:http://com.8s8s.com/it/it11395.htm