龙源期刊网 http://www.qikan.com.cn
基于JFreeChart的Web统计图表研发
作者:林进 周栋 车翠琦 汤琼
来源:《电脑知识与技术》2012年第26期
摘要:图表是一种直观、形象显示数据的有效方式。该文以实际项目中问题为需求,在分析了JFreeChart组件结构的基础上,详细介绍了其在J2EE平台开发应用于Web的动态统计图表的方法,该方法对此类图表的开发有很好的参考价值。 关键词:JFreeChart;JAVA;动态统计图表
中图分类号:TP311文献标识码:A文章编号:1009-3044(2012)26-6253-03 Research and Development of Web Statistical Charts Based on JFreeChart LIN Jin, ZHOU Dong, CHE Cui-qi, TANG Qiong
(College of Information&Technology, Zhejiang Chinese Medical University, Hangzhou 310053, China)
Abstract: The chart is a visual image of an effective way to display data. Based on the actual demand of a project , this paper in? troduces the method of dynamic charts in the J2EE platform development applied to Web in detail after analyzing the JFreeChart component structure,which has a good reference value for the development of such charts. Key words: JFreeChart; JAVA; dynamic statistical charts
在J2EE平台上开发Web应用的过程中,常会遇到绘制图形的问题,生成基于浏览器的Web图表技术也很多,而服务器端直接生成图表的方式更适合于我们目前的需求。本文介绍的就是一个基于Java的图表引擎JFreeChart,它可用在服务器端产生图表,可以很好地解决图形绘制问题。
JFreeChart是JFreeChart公司组织开发的一种基于JAVA语言的图表开发技术,也是开放源代码站点SourceForge.net上的一个JAVA项目[1]。基本能够解决目前的图形方面的需求生成各种各样的统计图,包括饼状图、柱状图、折线图、分布图和混合图等等。它生成的图形可以PNG和JPEG文件格式保存,向网络客户浏览器传送,也可以直接输出到屏幕上。同时还可以与PDF和EXCEL关联,生成该格式的文件。 1 JFreeChart介绍
龙源期刊网 http://www.qikan.com.cn
JFreeChart组件对绘制图表的细节进行了封装,它对外提供了绘制图形及设置图形属性的接口与方法。因此,在JFreeChart组件的使用过程中,不必关心它所绘制的图形报表是如何实现的,只需要了解JFreeChart组件的结构及核心对象。
JFreeChart组件的核心对象有:制图对象、制图工厂对象、数据集合对象、绘图区对象、坐标轴对象和、图片渲染对象[2]。 一般产生图表的流程如图1所示。 2系统框架设计
本文介绍的图表生成技术框架主要分为3层:表示层、控制层、数据层。表示层即外部页面JSP和外部接口并用,主要职责就是为用户提供信息以及把用户指令翻译传送给控制层和数据层,在本文中主要是传送参数并显示JFreeChart生成的图形;控制层是业务逻辑层,主要是对表示层传送的请求加以处理并返回,根据JSP页面传过来的参数和数据层提供的数据运用JFreeChart组件生成对应的图形返回到JSP页面;数据层是连接数据库和处理数据,为控制层生成图形提供对应的数据合成数据集。表示层通过ajax向控制层发送请求,控制层接收请求并处理,根据action类中方法对数据层进行访问,数据层对数据库中的数据进行封装处理,通过Spring、Struts在表示层输出。系统技术框架如图2所示。 3报表实现 3.1环境配置
本文报表的实现是基于SSM框架结构,主要用到的技术是:Spring、Struts2、mybatis,以SQL Server 2008为后台数据库。在使用JFreeChart之前,需要将其提供的JFreeChart组件、struts2-jfreechart-plugin、gwt-benchmark-viewer开发包文件添加到本地的开发类库之中。 3.2图表生成
本文通过JFreeChart应用于某科教信息管理系统的实例来研究JFreeChart的使用,主要需求包括各地市的相关项目的参加人数或各类费用统计的统计图表。本文以柱状图为例显示进修情况的人数,以地市为单位。具体实现过程如下:
1)创建数据集对象CategoryDataset。此过程使用DatasetUtilities类的
createCategoryDataset()方法进行创建,其方法需要3个参数(rowKeys,columnKeys, data)。其中rowKeys表示地市,columnKeys表示人数, data表示填充柱状图所要的来自SQL Server 2008数据库的进修情况维护表。
2)创建图表对象JFreeChart。此过程使用ChartFactory工厂类里的createBarChart3D()方法进行创建,其方法需要提供8个参数( \标题\,X,Y,dataset,
龙源期刊网 http://www.qikan.com.cn
PlotOrientation.VERTICAL,true,true,false)。其中分别代表:标题、横坐标、纵坐标、数据集、图标方向、显示图例、生成工具、启用超键接。
3)创建图表区域对象CategoryPlot。通过语句ValueAxis rangeAxis = plot. getRangeAxis()实现坐标轴对象。通过rangeAxis的set? UpperMargin()和setLowerMargin()方法来分别设置最高一个柱和图片顶端的距离和最低一个柱和图片底端的距离。 4)创建显示图表对象类型BarRenderer3D。为renderer设置一些属性,如
setBaseOutlinePaint设置基线颜色,setWallPaint设置柱的颜色,setItemMargin设置平行柱间的距离以及setItemLabelXXX设置显示每个柱的数值,并可修改该数值的字体属性等方法。 3.3在JSP中实现
将服务器中生成的图表显示在JSP页面中需要为图表显示分配空间,本文采用iframe来存放图表,iframe通过url链接访问到服务器生成的图表,在此过程中需要对Sping和Struts2进行相应的配置,以便浏览器能正确访问。具体操作如下:
1)生成某统计图表的的方法具体实现在studyNextStackedBarAction中,而
studyNextStackedBarAction调用到了接口studyNext? Mapper和studyNextSumAction类,利用Spring的控制反转机制来管理生成图表的studyNextStackedBarAction类,Spring对studyNext? StackedBarAction类管理的配置文件applicationContext.xml中,添加如下配置:
其中的studyNextMapper和studyNextSumAction是对JFreeChart的核心对象数据集合对象进行封装,可以实现动态图表的生成。
2)通过Struts2的配置文件可以找到studyNextBarAction类,从而调用getChart方法。在struts.xml文件,添加配置文件如下: