JSPCN主页 | JSP空间 | 网站制作 | JSP下载 | JSP论坛 | JSP教程 | 关于JSPCN | 联系我们
JSP虚拟主机,jsp空间,java空间,java虚拟空间,详细请点击进入
做最专业的JSP中文网站 当前位置首页--JAVA技术--JAVA网络  
文章搜索:
关键字 标题
  
JSP中文网内容管理系统(JCMS)
JSP虚拟主机
网络笔记本
网摘,图片,笔记收藏
虚拟服务器

JSPCN文章目录分类
JSP配置[219]JSP基础[136]
中文问题[69]上传问题[27]
JAVABEAN[46]数据库[212]
文件操作[126]图片声音[17]
JSP其他[57]时间相关[16]
JAVAMAIL[72]STRUTS[144]
开发工具[28]教程系列[157]
JSP实例[89]
JAVA基础[421]APPLET[78]
JAVA网络[179]Applica[115]
Servlet[98]XML[163]
J2ME[257]J2EE[374]
考试相关[63]JAVA线程[90]
EJB[261]Swing[26]
Java API[141]声音图片[28]
异常处理[33]JAVA实例[290]
JAVA类[139]SUN[89]
Hibernate[6]JMX[8]
Spring[34]
本版推荐文章 
本版热点文章 
相关文章链接 
 
简化JFreeChart创建WEB图表<一>
作者:     文章来源:
访问次数:38次     加入时间:2007年01月17日
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);
Copyright © 2002-2005 JSPCN.net. All rights reserved.
JSP中文网    备案序号:蜀ICP备05001583号
成都恒海科技发展有限公司    成都市一环路南二段6号新瑞楼三楼8号