简化JFreeChart创建WEB图表

本文介绍了使用JFreeChart在Web应用中创建图表的方法。主要包括关键类的作用、配置步骤及示例代码,帮助读者快速掌握在Web环境中部署图表的技术。
<script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script> JFreeChart是开放源代码项目,它主要用来各种各样的图表,这些图表包括:饼图、柱状图(普通柱状图以及堆栈柱状图)、线图、区域图、分布图、混合图、甘特图以及一些仪表盘等等。(为什么好的东西都是老外做的) 最近由于在一个项目中要创建WEB图表,对JFreeChart做了一些研究。 一.JFreeChart创建WEB图表的基本知识 JFreeChart主要是由三个类构成: org.jfree.chart.servlet.ChartDeleter org.jfree.chart.servlet.DisplayChart org.jfree.chart.servlet.ServletUtilities 我在下面做一下简单的介绍: ChartDeleter 继承自HttpSessionBindingListener,用于实现当Session 关闭时,删除 临时目中的图象文件。 ServletUtilities有一系列方法:saveChartAs*;saveChartAs*是把图表按照不同的形式存储为图象;sendTempFile方法被重载了很多次,用于把文件流发送response; DisplayChart继承自Httpservlet 用于处理显示图象; 在你的应用中 web.xml文件必须配置DisplayChart;配置形式如: <web-app> <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> </web-app> 二 .如何利用JFreeChart创建WEB图表 JFreeChart创建图表的,在JFreeChart已经有了基于GUI的例子(不知道为什么没有基于WEB的例子);而且例子很详尽,包括各种图表的创建。那么如何把图表创建到WEB面上呢,JFreeChart的机制是把图表保存为图片,然后WEB页上链接图片(当然也可以通过Applet在WEB上显示图表)。 创建WEB图表的过程: JFreeChart chart =ChartFactory.create***(***);//在JFreeChart中,通过调用ChartFactory的工程方法创建各种形式的图表,返回一个JFreeChart对象; filename = ServletUtilities.saveChartAs*(chart, height, weight,session);//把JFreeChart对象保存成目中图片形式。返回图片名 imageurl=request.getContextPath() "/servlet/DisplayChart?filename=" filename;//图片的url 上面描述了创建WEB图表的基本过程,只要按照上面的步骤封装到Bean里面。用返回一个Image url ,在WEB里调用Bean 获得图片的url; 下面我给出一个例子: 下面是java bean 的代码 import java.io.*; import java.awt.Insets; import java.awt.Font; import java.text.SimpleDateFormat; import java.util.Iterator; import java.util.Locale; import java.text.NumberFormat; import javax.servlet.http.HttpSession; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.jfree.data.*; import org.jfree.chart.*; import org.jfree.chart.axis.*; import org.jfree.chart.renderer.StandardXYItemRenderer; import org.jfree.chart.plot.*; import org.jfree.chart.entity.*; import org.jfree.chart.urls.*; import org.jfree.chart.servlet.*; import org.jfree.chart.TextTitle; import java.net.URL; public class ImagShow { public String getimageurl(HttpServletRequest request, HttpServletResponse response) { String titleStr = "2003某某大学就业率统计"; String filename = null; Font font; try { PiePlot plot = new PiePlot(getdataset()); plot.setInsets(new Insets(0, 5, 5, 5)); JFreeChart chart = new JFreeChart("", JFreeChartConstants.DEFAULT_TITLE_FONT, plot, true); TextTitle title = new TextTitle(titleStr); chart.setTitle(title); //设置标题 font = new Font("黑体", Font.CENTER_BASELINE, 20); //设置标题的字体和大小 title.setFont(font); chart.setBackgroundPaint(java.awt.Color.white); //设置图片的底色 HttpSession session = request.getSession(); filename = ServletUtilities.saveChartAsPNG(chart, 500, 300, session); ServletUtilities.sendTempFile(filename, response); return request.getContextPath() "/servlet/DisplayChart?filename=" filename; } catch (Exception ex) { System.out.print(ex.fillInStackTrace()); } return null; } private DefaultPieDataset getdataset() { DefaultPieDataset data = new DefaultPieDataset(); data.setValue("未就业", 2000); data.setValue("就业", 400); data.setValue("不知去向", 100); return data; } } 下面是Jsp的代码: <%@ page contentType="text/html;charset=gb2312"%> <%@ page import = "com.tryit.Tryitshow"%> <%ImagShow imgshow =new ImagShow ();%> <img src="<%= imgshow.getimageurl(request,response) %>" width=500 height=300 border=0 > 运行这个例子,你会在Jsp页面上看到一个图表;(在JBuilder下的运行方式,图片不能显示处理,请在WEB服务器中启动这个例子;request library要包含Jcommon;WEB.xml文件要配置DisplayChart);
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值