﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-LuckyStar 家园-文章分类-报表</title><link>http://www.blogjava.net/libin2722/category/25734.html</link><description /><language>zh-cn</language><lastBuildDate>Tue, 11 Sep 2007 04:57:24 GMT</lastBuildDate><pubDate>Tue, 11 Sep 2007 04:57:24 GMT</pubDate><ttl>60</ttl><item><title>JFreeChart 在 webwork 中的应用 </title><link>http://www.blogjava.net/libin2722/articles/144170.html</link><dc:creator>礼物</dc:creator><author>礼物</author><pubDate>Tue, 11 Sep 2007 02:17:00 GMT</pubDate><guid>http://www.blogjava.net/libin2722/articles/144170.html</guid><wfw:comment>http://www.blogjava.net/libin2722/comments/144170.html</wfw:comment><comments>http://www.blogjava.net/libin2722/articles/144170.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/libin2722/comments/commentRss/144170.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/libin2722/services/trackbacks/144170.html</trackback:ping><description><![CDATA[前言：<br />
　　webwork是当今流行的J2EE几大架构之一，在实际的项目中，我们往往要在webwork的输出流中调用一个图表chart，代替直接用response.out输出。那么我们应该怎么样去实现呢？本文将详细阐述JFreeChart在webwork中的应用。本文调试环境为windows2000+tomcat5.0。共分三个部分：<br />
　　1，JFreeChart 简介 <br />
　　2，webwork简介及webwork，JFreeChart应用环境的配置<br />
　　3，JFreeChart在webwork中的应用的具体例子<br />
　　<br />
　　&lt;B&gt;一： JFreeChart 简介：&lt;/B&gt;<br />
　　JFreeChart是开放源代码项目，它主要用来各种各样的图表，这些图表包括：饼图、柱状图(普通柱状图以及堆栈柱状图)、线图、区域图、分布图、混合图、甘特图以及一些仪表盘等等。<br />
　　一.JFreeChart创建WEB图表的基本知识<br />
　　JFreeChart主要是由三个类构成：<br />
　　org.jfree.chart.servlet.ChartDeleter<br />
　　org.jfree.chart.servlet.DisplayChart<br />
　　org.jfree.chart.servlet.ServletUtilities<br />
　　在下面做一下简单的介绍：<br />
　　ChartDeleter 继承自HttpSessionBindingListener，用于实现当Session 关闭时，删除<br />
　　临时目中的图象文件。<br />
　　ServletUtilities有一系列方法：<br />
　　saveChartAs*;saveChartAs*是把图表按照不同的形式存储为图象；<br />
　　sendTempFile方法被重载了很多次，用于把文件流发送response;<br />
　　DisplayChart继承自Httpservlet 用于处理显示图象；<br />
　　<br />
　　&lt;B&gt;二：webwork简介及webwork，JFreeChart应用环境的配置&lt;/B&gt;<br />
　　WebWork是一个源代码开放的Web应用框架，用于简化基于Web的应用开发。<br />
　　WebWork的最大优点是它的简单性和灵活性。WebWork有一个很小的API，它使开发者可以迅速进行开发工作。<br />
　　WebWork是许多特性和适用性的组合，包括使用variour view技术，<br />
　　例如JavaServer Pages(JSP),Velocity,Extensible Stylesheet Language Transformations <br />
　　Specification(XSLT)和JasperReporters。还有，webwork对JFreechart有非常好的支持。<br />
　　从这里下载webwork-2.0-beta2.zip。<br />
　　(https://webwork.dev.java.net/servlets/ProjectDocumentList)<br />
　　解压缩文件，你可以在webwork-2.0\lib\optional目录下找到jfreechart-0.9.13.jar。<br />
　　你也可以从这里下载最新的jfreechart-0.9.15.zip。<br />
　　（http://www.jfree.org/jfreechart/index.html）<br />
　　本文使用的是jfreechart-0.9.15.zip。<br />
　　web应用的目录结构图如下所示：<br />
　　/webapp/WEB-INF <br />
　　/webapp/WEB-INF/web.xml <br />
　　/webapp/WEB-INF/webwork.tld <br />
　　/webapp/WEB-INF/classes <br />
　　/webapp/WEB-INF/classes/xwork.xml <br />
　　/webapp/WEB-INF/lib <br />
　　接下来请务必将下面这些包放在/webapp/WEB-INF/lib 目录下。<br />
　　1。commons-logging.jar <br />
　　2。ognl-2.5.1.jar <br />
　　3。oscore-2.2.1.jar <br />
　　4。xwork-1.0-beta.jar <br />
　　5。webwork-2.0-beta.jar <br />
　　下面是可以选择的包，具体根据项目需要来决定是否添加： <br />
　　cos-multipart.jar <br />
　　pell-multipart.jar <br />
　　velocity-dep-1.3.jar<br />
　　2.1 配置你的xwork.xml <br />
　　文件像下面例子一样，注意一定要包含webwork-default.xml。<br />
　　&lt;!DOCTYPE xwork PUBLIC "-//OpenSymphony Group//XWork 1.0//EN" <br />
　　<br />
　　"http://www.opensymphony.com/xwork/xwork-1.0.dtd"&gt;<br />
　　&lt;xwork&gt;<br />
　　　　&lt;include file="webwork-default.xml"/&gt;　 <br />
　　　 &lt;package name="default" extends="webwork-default"&gt;<br />
　　　　...<br />
　　　　&lt;/package&gt;<br />
　　&lt;/xwork&gt;<br />
　　<br />
　　webwork-default.xml这个文件在webwork-2.0-beta.jar里面。<br />
　　2.2 修改web.xml文件<br />
　　修改web.xml文件以包含webwork的设置，如何设置的内容，请察看<br />
　　$WEBWORK/src/resource/web/WEB-INF/web.xml文件。<br />
　　2.3 Taglib部分的选择<br />
　　如果你不打算使用taglib、Velocity、或者XSLT，仅仅只需要在web.xml中不要包含这些内容就可以了。<br />
　　2.4 Log的设置<br />
　　Webwork使用log4j，如果你的app server没有安装log4j，你需要增加log4j，复制log4j.jar文件到合适的lib目录。如果你使用tomcat，那么安装目录是$TOMCAT_HOME\lib，当然也可以安装到你的web应用的路径。但需要注意的是如果appserver也适用log4j，你需要小心版本冲突。<br />
　　2.5 解压缩jfreechart-0.9.15.zip<br />
　　jfreechart-0.9.15目录下的jfreechart-0.9.15.jar和lib/jcommon-0.9.0.jar,lib/gnujaxp.jar都是开发运行需要的文件，把这三个文件放置到/webapp/WEB-INF/lib目录下。<br />
　　<br />
　　&lt;B&gt;三 JFreeChart在webwork中的应用的具体例子&lt;/B&gt;<br />
　　在进行上面的步骤后，我们将要进行具体的开发过程。 <br />
　　步骤：首先在xwork.xml -定义result-types <br />
　　　 &lt;result-types&gt;<br />
　　　 &lt;result-type name="chart" class="pawpaw.test.ChartResult"/&gt;<br />
　　　 &lt;/result-types&gt;<br />
　　<br />
　　　 然后在xwork.xml - 定义action <br />
　　&lt;action name="viewModerationChart" class="pawpaw.test.ViewModerationChartAction"&gt; <br />
　　　&lt;result name="success" type="chart"&gt; <br />
　　　　&lt;param name="width"&gt;400&lt;/param&gt;<br />
　　　　&lt;param name="height"&gt;300&lt;/param&gt; &lt;/result&gt;<br />
　　&lt;/action&gt;<br />
　　<br />
　　其中param里面定义的是chart图表的长宽。<br />
　　然后在web.xml文件中增加以下内容：<br />
　　　　&lt;servlet&gt;<br />
　　　　　　&lt;servlet-name&gt;DisplayChart&lt;/servlet-name&gt;<br />
　　　　　　&lt;servlet-class&gt;org.jfree.chart.servlet.DisplayChart&lt;/servlet-class&gt;<br />
　　　　&lt;/servlet&gt;<br />
　　　　&lt;servlet-mapping&gt;<br />
　　　　　　&lt;servlet-name&gt;DisplayChart&lt;/servlet-name&gt;<br />
　　　　　　&lt;url-pattern&gt;/servlet/DisplayChart&lt;/url-pattern&gt;<br />
　　　　&lt;/servlet-mapping&gt;<br />
　　<br />
　　部分源代码如下：<br />
　　package pawpaw.test;<br />
　　<br />
　　import com.opensymphony.webwork.ServletActionContext;<br />
　　import com.opensymphony.xwork.ActionInvocation;<br />
　　import com.opensymphony.xwork.Result;<br />
　　import org.jfree.chart.ChartUtilities;<br />
　　import org.jfree.chart.JFreeChart;<br />
　　import java.io.OutputStream;<br />
　　import javax.servlet.http.HttpServletResponse;<br />
　　/*<br />
　　 * &lt;p&gt;Description: 把chart文件流换成是通过HttpServletResponse<br />
　　 *　　对象获取到的输出流在浏览器中输出&lt;/p&gt;<br />
　　 * author: pawpaw<br />
　　 * @version 1.0　12/15/2003<br />
　　 */<br />
　　public class ChartResult implements Result {<br />
　　　　JFreeChart chart;<br />
　　　　boolean chartSet = false;<br />
　　　　private int height;<br />
　　　　private int width;<br />
　　<br />
　　　　public void setChart(JFreeChart chart) {<br />
　　　　　　this.chart = chart;<br />
　　　　　　chartSet = true;<br />
　　　　}<br />
　　　　//设置图片的长度<br />
　　　　public void setHeight(int height) {<br />
　　　　　　this.height = height;<br />
　　　　}<br />
　　　　//设置图片的宽度<br />
　　　　public void setWidth(int width) {<br />
　　　　　　this.width = width;<br />
　　　　}<br />
　　<br />
　　　　public void execute(ActionInvocation invocation) throws Exception {<br />
　　　　　　JFreeChart chart = null;<br />
　　<br />
　　　　　　if (chartSet) {<br />
　　　　　　　　chart = this.chart;<br />
　　　　　　} else {<br />
　　　　　　　　chart = (JFreeChart) invocation.getStack().findValue("chart");<br />
　　　　　　}<br />
　　<br />
　　　　　　if (chart == null) {<br />
　　　　　　　　throw new NullPointerException("No chart found");<br />
　　　　　　}<br />
　　　　　　<br />
　　　　　　//把文件流换成是通过HttpServletResponse对象获取到的输出流<br />
　　　　　　HttpServletResponse response = ServletActionContext.getResponse();<br />
　　　　　　OutputStream os = response.getOutputStream();<br />
　　　　　　ChartUtilities.writeChartAsPNG(os, chart, width, height);<br />
　　　　　　os.flush();<br />
　　　　}<br />
　　}<br />
　　创建JFreeChart的action类。<br />
　　package pawpaw.test;<br />
　　<br />
　　import java.awt.Insets;<br />
　　import java.awt.Font;<br />
　　import java.io.PrintWriter;<br />
　　import javax.servlet.http.HttpSession;<br />
　　import org.jfree.data.*;<br />
　　import org.jfree.chart.*;<br />
　　import org.jfree.chart.plot.*;<br />
　　import org.jfree.chart.entity.*;<br />
　　import org.jfree.chart.urls.*;<br />
　　import org.jfree.chart.servlet.*;<br />
　　import org.jfree.chart.labels.StandardPieToolTipGenerator;<br />
　　import org.jfree.util.Rotation;<br />
　　import com.opensymphony.xwork.ActionSupport;<br />
　　/*<br />
　　 *&lt;p&gt;Description: 输出一条斜线chart&lt;/p&gt;<br />
　　 * author: pawpaw<br />
　　 * @version 1.0　12/15/2003<br />
　　 */<br />
　　public class ViewModerationChartAction extends ActionSupport {　 <br />
　　　 private JFreeChart chart;<br />
　　　 public String execute() throws Exception {<br />
　　　　　// 创建chart文件数据集<br />
　　　　　XYSeries dataSeries = new XYSeries(null);<br />
　　　　　for
<img src ="http://www.blogjava.net/libin2722/aggbug/144170.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/libin2722/" target="_blank">礼物</a> 2007-09-11 10:17 <a href="http://www.blogjava.net/libin2722/articles/144170.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>使用 JFreeChart来创建基于web的图表 </title><link>http://www.blogjava.net/libin2722/articles/144171.html</link><dc:creator>礼物</dc:creator><author>礼物</author><pubDate>Tue, 11 Sep 2007 02:17:00 GMT</pubDate><guid>http://www.blogjava.net/libin2722/articles/144171.html</guid><wfw:comment>http://www.blogjava.net/libin2722/comments/144171.html</wfw:comment><comments>http://www.blogjava.net/libin2722/articles/144171.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/libin2722/comments/commentRss/144171.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/libin2722/services/trackbacks/144171.html</trackback:ping><description><![CDATA[WWW的发展使得基于因特网的应用程序不再局限于静态或者简单的动态内容提供。传统的一些以软件包形式发布应用程序例如报表系统等都在逐渐搬到因特网上。但是这两者之间有着天壤之别，虽然对于数据获取、业务处理等方面基本类似，但是最大的差别在于用户界面。为了能在web浏览器上显示要求用户界面使用HTML以及图片的方式来展现数据，而传统的一些利用操作系统本身的控件来开发的用户界面无法适应琳琅满目的客户端，因此在这里也变得无能为力。回到本文的题目上来，为了创建一个可以在web浏览器上查看到图表一般有两种做法：第一种就是使用applet利用java本身对图形的支持来显示一个图表；第二种就是直接在web服务器端生成好图表图片文件后发送给浏览器。第一种方式显然对于客户端要求太高，随着现在主流浏览器放弃对JAVA的支持后，这种方式只适合一些局域网的应用，而对于因特网的环境就显得不太适合。因此我们下面将介绍一个JAVA的图表引擎JFreeChart用来产生基于WEB的图表。<br />
　　<br />
　　<strong>一、JFreeChart项目简介</strong><br />
　　JFreeChart是开放源代码站点SourceForge.net上的一个JAVA项目，它主要用来各种各样的图表，这些图表包括：饼图、柱状图(普通柱状图以及堆栈柱状图)、线图、区域图、分布图、混合图、甘特图以及一些仪表盘等等。这些不同式样的图表基本上可以满足目前的要求。为了减少篇幅本文主要介绍前面三种类型的图表，读者可以触类旁通去开发其他样式的图表。下面几个是JFreeChart产生的这三种类型图表的结果：<br />
　　
<center>　<img src="http://www.raqu.com/Article/UploadFiles_wg/200607/2006719232921713.gif"  alt="" /></center><br />
　　
<center>图1</center><br />
　　
<center>　<img src="http://www.raqu.com/Article/UploadFiles_wg/200607/2006719232921119.gif"  alt="" /></center><br />
　　
<center>图2</center><br />
　　
<center>　<img src="http://www.raqu.com/Article/UploadFiles_wg/200607/2006719232922533.gif"  alt="" /></center><br />
　　
<center>图3</center><br />
　　上面的三个图都是表示四个季度的某个产品的销量信息。在继续下面小节之前必须先准备好开发环境，因为是基于WEB浏览器的图表展现，因此需要一个Servlet引擎或者是J2EE应用服务器（例如WebSphere，Tomcat等）。WEB环境的搭建就不累赘了，读者根据喜好自行安装。JFreeChart引擎本身需要到SourceForge.net上下载，地址如下： <br />
　　JFreeChart主页：http://www.jfree.org/jfreechart/index.html<br />
　　JFreeChart下载页面：http://sourceforge.net/projects/jfreechart/<br />
　　<br />
　　下载的时候需要注意的是必须下载两个文件：JFreeChart以及Jcommon。目前最新配套版本是：JFreeChart 0.9.11 Jcommon 0.8.6 <br />
　　<br />
　　这里有点笔者在开发中遇见的问题需要注意的是：在使用Eclipse开发的时候会报一个莫名其妙的错误，错误可能指向某个类文件的第一行。遇到这样的问题一般是因为没有把Jcommon的jar包设置到项目的类路径中的缘故。具体的原因不祥。 （还有log4j等也咬一起导入）。<br />
　　<br />
　　<strong>二、解读JFreeChart的源码结构</strong><br />
　　在开始使用JFreeChart之前我们有必要先大概了解一下JFreeChart本身的结构以及它所带一些例子程序，这样有助于我们下一步自行开发。下载JFreeChart包后已经带有非常丰富的例子，因为JFreeChart这个项目本身的使用文档非常少，因此学习它最好的办法就是学习它所带的例子源码。在包org.jfree.chart.demo中有几十个文件用于展示JFreeChart所能支持的所有图表的结果。如果你的JDK是比较新的情况下可能在运行这些例子时会有问题，现象如下： <br />
　　<br />
　　java.lang.UnsatisfiedLinkError: initDDraw<br />
　　 at sun.awt.windows.Win32OffScreenSurfaceData.initDDraw(Native Method)<br />
　　 at sun.awt.windows.Win32OffScreenSurfaceData.&lt;clinit&gt;(Win32OffScreenSurfaceData.java:141)<br />
　　 at sun.awt.Win32GraphicsDevice.&lt;clinit&gt;(Win32GraphicsDevice.java:58)<br />
　　 at sun.awt.Win32GraphicsEnvironment.makeScreenDevice(Win32GraphicsEnvironment.java:168)<br />
　　 at sun.java2d.SunGraphicsEnvironment.getScreenDevices(SunGraphicsEnvironment.java:240)<br />
　　 at sun.awt.Win32GraphicsEnvironment.getDefaultScreenDevice(Win32GraphicsEnvironment.java:61)<br />
　　 at java.awt.Window.init(Window.java:224)<br />
　　 at java.awt.Window.&lt;init&gt;(Window.java:268)<br />
　　 at java.awt.Frame.&lt;init&gt;(Frame.java:398)<br />
　　 at javax.swing.JFrame.&lt;init&gt;(JFrame.java:198)<br />
　　 at org.jfree.chart.demo.JFreeChartDemo.&lt;init&gt;(JFreeChartDemo.java:148)<br />
　　 at org.jfree.chart.demo.JFreeChartDemo.main(JFreeChartDemo.java:285)<br />
　　Exception in thread "main"<br />
　　<br />
　　这个错误是由于新版的Swing大量的使用了微软的DirectDraw的技术来提高画图的性能，而可能你的显卡在这时候会跟你闹点情绪或者显卡本身并不支持这样的一个技术。难道就没有办法了嘛？要解决这个问题也非常简单，我们可以屏蔽掉DirectDraw，不让Swing使用该技术就可以了。在运行这些代码时给虚拟机指定参数-Dsun.java2d.noddraw即可。 <br />
　　<br />
　　这时可能你又该纳闷了，不说是基于Web的图表嘛，怎么又扯到Swing上了？这是因为为了使开发者容易上手，无需配置任何运行环境，所以这些例子都是基于GUI方式的用于展现给开发者如果生成一个图表，我们要学习的也就是如何利用这个引擎生成图表而不是怎么来显示一个图表。当我们把生成的图表对象Export到一个图像文件即可在Web上发布。 <br />
　　<br />
　　下面我们来介绍JFreeChart中几个核心的对象类：<br />
　　&lt;table boder=0&gt;<br />
　　&lt;tr&gt;&lt;td&gt;类名&lt;/td&gt;&lt;td&gt;类的作用以及简单描述&lt;/td&gt;&lt;/tr&gt;<br />
　　&lt;tr&gt;&lt;td&gt;JFreeChart&lt;/td&gt;&lt;td&gt;图表对象，任何类型的图表的最终表现形式都是在该对象进行一些属性的定制。JFreeChart引擎本身提供了一个工厂类用于创建不同类型的图表对象&lt;/td&gt;&lt;/tr&gt;<br />
　　&lt;tr&gt;&lt;td&gt;XXXXXDataset&lt;/td&gt;&lt;td&gt;数据集对象，用于提供显示图表所用的数据。根据不同类型的图表对应着很多类型的数据集对象类&lt;/td&gt;&lt;/tr&gt;<br />
　　&lt;tr&gt;&lt;td&gt;XXXXXPlot&lt;/td&gt;&lt;td&gt; 图表区域对象，基本上这个对象决定着什么样式的图表，创建该对象的时候需要Axis、Renderer以及数据集对象的支持&lt;/td&gt;&lt;/tr&gt;<br />
　　&lt;tr&gt;&lt;td&gt;XXXXXAxis&lt;/td&gt;&lt;td&gt; 用于处理图表的两个轴：纵轴和横轴&lt;/td&gt;&lt;/tr&gt;<br />
　　&lt;tr&gt;&lt;td&gt;XXXXXRenderer&lt;/td&gt;&lt;td&gt;负责如何显示一个图表对象&lt;/td&gt;&lt;/tr&gt;<br />
　　&lt;tr&gt;&lt;td&gt;XXXXXURLGenerator&lt;/td&gt;&lt;td&gt; 用于生成Web图表中每个项目的鼠标点击链接&lt;/td&gt;&lt;/tr&gt;<br />
　　&lt;tr&gt;&lt;td&gt;XXXXXToolTipGenerator&lt;/td&gt;&lt;td&gt; 用于生成图象的帮助提示，不同类型图表对应不同类型的工具提示类&lt;/td&gt;&lt;/tr&gt;<br />
　　&lt;/table&gt;<br />
　　<br />
　　基本上我认为JFreeChart项目本身的类结构的设计并不是很好，首先在创建图表的时候用到了大量的工厂方法，这样做虽然可以简化创建图表对象的代码，但是对项目本身或者开发人员来讲自行扩展一种新的图表都仍然是一件很麻烦的事情；其次除图表对象本身外其余的类过于复杂，使用者必须去了解每个类型的图表对象应该对应哪些Axis、Plot、Renderer类，并且必须非常熟悉这些类的构造函数中每个参数的具体含义。这些问题都大大困扰很多初学者。不过，虽然存在很多问题，但是JFreeChart本身仍不失为一个非常优秀的图表引擎，况且项目本身也在逐渐的发展中。 <br />
　　<br />
　　在非常简略的介绍了JFreeChart本身的代码结构后，下面我们开始动手试验几个常用的图表并把他们放到web上。<br />
　　<br />
　　<strong>三、使用JFreeChart生成各种样式的图表</strong><br />
　　限于篇幅的问题我们在这里只实现两种常用的图表，其他类型图表读者可以触类旁通。我们先给出柱状图的实现，饼图的实现再来跟柱状图进行比较。 <br />
　　1 柱状图<br />
　　<br />
　　[code]package lius.chart.demo;<br />
　　<br />
　　import java.io.*;<br />
　　<br />
　　import org.jfree.data.*;<br />
　　import org.jfree.chart.*;<br />
　　import org.jfree.chart.plot.*;<br />
　　/**<br />
　　 * 该类用于演示最简单的柱状图生成<br />
　　 * @author Winter Lau<br />
　　 */<br />
　　public class BarChartDemo {<br />
　　<br />
　　 public static void main(String[] args) throws IOException{<br />
　　<br />
　　　CategoryDataset dataset = getDataSet2();<br />
　　　JFreeChart chart = ChartFactory.createBarChart3D(<br />
　　　 "水果产量图", // 图表标题<br />
　　　 "水果", // 目录轴的显示标签<br />
　　　 "产量", // 数值轴的显示标签<br />
　　　 dataset, // 数据集<br />
　　　 PlotOrientation.VERTICAL, // 图表方向：水平、垂直<br />
　　　 true,　// 是否显示图例(对于简单的柱状图必须是false)<br />
　　　 false,　// 是否生成工具<br />
　　　 false　// 是否生成URL链接<br />
　　　 );<br />
　　　 <br />
　　　FileOutputStream fos_jpg = null;<br />
　　　try {<br />
　　fos_jpg = new FileOutputStream("D:\\fruit.jpg");<br />
　　ChartUtilities.writeChartAsJPEG(fos_jpg,100,chart,400,300,null);<br />
　　　} finally {<br />
　　try {<br />
　　fos_jpg.close();<br />
　　} catch (Exception e) {}<br />
　　　}<br />
　　 }<br />
　　 /**<br />
　　　* 获取一个演示用的简单数据集对象<br />
　　　* @return<br />
　　　*/<br />
　　 private static CategoryDataset getDataSet() {<br />
　　　DefaultCategoryDataset dataset = new DefaultCategoryDataset();<br />
　　　dataset.addvalue(100, null, "苹果");<br />
　　　dataset.addvalue(200, null, "梨子");&lt;
<img src ="http://www.blogjava.net/libin2722/aggbug/144171.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/libin2722/" target="_blank">礼物</a> 2007-09-11 10:17 <a href="http://www.blogjava.net/libin2722/articles/144171.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>WEB开发：使用JFreeChart生成热点图表 </title><link>http://www.blogjava.net/libin2722/articles/144164.html</link><dc:creator>礼物</dc:creator><author>礼物</author><pubDate>Tue, 11 Sep 2007 02:13:00 GMT</pubDate><guid>http://www.blogjava.net/libin2722/articles/144164.html</guid><wfw:comment>http://www.blogjava.net/libin2722/comments/144164.html</wfw:comment><comments>http://www.blogjava.net/libin2722/articles/144164.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/libin2722/comments/commentRss/144164.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/libin2722/services/trackbacks/144164.html</trackback:ping><description><![CDATA[<strong>＜一＞前言</strong>：<br />
　　<br />
　　JFreeChart是开放源代码站点SourceForge.net上的一个JAVA项目。它的功能十分强大，能创建饼图、柱状图(普通柱状图以及堆栈柱状图)、线图、区域图、分布图、混合图、甘特图以及一些仪表盘等等，并可生成PNG或JPG图片格式文件。<br />
　　<br />
　　本人在学习过程中发现，网上很多文章都是讲一些JFreeChart的基本应用，而对JFreeChart生成热点图表这样常用的功能虽有所提及却没有一个完整的例子，所以我就写一个简单示例供大家参考，希望对大家的学习有所帮助。<br />
　　<br />
　　<strong>＜二＞示例说明</strong>：<br />
　　<br />
　　假设有一个关于程序员北京，上海，广洲三地程序员学历，开发语言，薪金情况的调查。首先要以饼图显示程序员学历的分布情况(index.jsp)。点击饼图的每一部分会以柱状图显示该层次程序员所用开发语言和薪金的情况(barview.jsp)。重点演示怎样在饼图上添加链接。<br />
　　<br />
　　<strong>＜三＞准备工作：</strong><br />
　　1.下载最新版本的JFreeChart,当前为jfreechart-1.0.0-rc1<br />
　　<br />
　　下载地址：http://www.jfree.org/jfreechart/index.html<br />
　　<br />
　　2.解压文件，将jfreechart-1.0.0-rc1/lib下的jcommon-1.0.0-rc1.jar，jfreechart-1.0.0-rc1.jar复制到WEB应用的lib目录下。<br />
　　<br />
　　3.在web.xml文件中增加以下内容：<br />
　　<br />
　　
<center>　<img src="http://www.raqu.com/Article/UploadFiles_wg/200607/2006719233012896.gif"  alt="" /></center><br />
　　
<center>　<img src="http://www.raqu.com/Article/UploadFiles_wg/200607/2006719233012198.gif"  alt="" /></center><br />
　　
<center>　<img src="http://www.raqu.com/Article/UploadFiles_wg/200607/2006719233013849.gif"  alt="" /></center><br />
　　
<center>　<img src="http://www.raqu.com/Article/UploadFiles_wg/200607/2006719233013716.gif"  alt="" /></center><br />
　　
<center>　<img src="http://www.raqu.com/Article/UploadFiles_wg/200607/2006719233013272.gif"  alt="" /></center><br />
　　
<center>　<img src="http://www.raqu.com/Article/UploadFiles_wg/200607/2006719233014719.gif"  alt="" /></center><br />
　　
<center>　<img src="http://www.raqu.com/Article/UploadFiles_wg/200607/2006719233014130.gif"  alt="" /></center><br />
　　
<center>　<img src="http://www.raqu.com/Article/UploadFiles_wg/200607/2006719233014350.gif"  alt="" /></center><br />
　　
<center>　<img src="http://www.raqu.com/Article/UploadFiles_wg/200607/2006719233014565.gif"  alt="" /></center><br />
　　　<img src="http://www.raqu.com/Article/UploadFiles_wg/200607/2006719233015224.gif"  alt="" /><br />
　　
<center><img src="http://www.raqu.com/Article/UploadFiles_wg/200607/2006719233015496.gif"  alt="" /></center>
 <img src ="http://www.blogjava.net/libin2722/aggbug/144164.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/libin2722/" target="_blank">礼物</a> 2007-09-11 10:13 <a href="http://www.blogjava.net/libin2722/articles/144164.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>