`

JFreeChart学习笔记(创建JSP输出)

    博客分类:
  • JAVA
阅读更多

JFreeChart学习笔记

<script type="text/javascript"><!----></script> <script src="http://pagead2.googlesyndication.com/pagead/show_ads.js" type="text/javascript"></script>
JFreeChart中几个核心的对象类:

JFreeChart

 
JFreeChart中几个核心的对象类:

类名
类的作用以及简单描述
JFreeChart
图表对象,任何类型的图表的最终表现形式都是在该对象进行一些属性的定制。JFreeChart引擎本身提供了一个工厂类用于创建不同类型的图表对象
XXXXXDataset
数据集对象,用于提供显示图表所用的数据。根据不同类型的图表对应着很多类型的数据集对象类。常用的数据集对象有:柱状图数据集对象DefaultCategoryDataset、饼图数据集对象DefauldPieDataset和曲线图数据集对象DefaultTableXYDataset
XXXXXPlot
图表区域对象,基本上这个对象决定着什么样式的图表,创建该对象的时候需要Axis、Renderer以及数据集对象的支持。常用的Plot对象有:柱状图CategoryPlot、饼图PiePlot和曲线图XYPlot。
XXXXXAxis
用于处理图表的两个轴:纵轴和横轴。常用的有NumberAxis数据轴,DateAxis日期轴。
XXXXXRenderer
负责如何显示一个图表对象。常用的Renderer有DefaultCategoryItemRenderer 柱状图显示器StandardXYItemRenderer曲线图显示器。饼图的Renderer
XXXXXURLGenerator
用于生成Web图表中每个项目的鼠标点击链接。常用的URLCenerator有StandardCategoryURLGenerator
StandardPieURLGenerator
StandardXYURLGenerator
XXXXXToolTipGenerator
用于生成图象的帮助提示,不同类型图表对应不同类型的工具提示类。常用的有:StandardXYToolTipGenerator
StandardCategoryToolTipGenerator
StandardPieItemLabelGenerator

 

一般的创建图表的过程为:

1.  从数据库里读取数据

2.  将数据保存到图表对应的数据集对象中

3.  创建坐标轴对象

4.  创建Renderer对象

5.  创建Plot对象

6.  创建JfreeChart对象

7.  生成图片文件(或者二进制流)

 

JfreeChart提供的Web应用的例子来说明一下以上几个步骤:

一.柱图。

public static String generateBarChart(Date hitDate, HttpSession session, PrintWriter pw) {

              String filename = null;

              try {

                     //  Retrieve list of WebHits

                     WebHitDataSet whDataSet = new WebHitDataSet();

                     ArrayList list = whDataSet.getDataBySection(hitDate);//获得数据集
 

                     //  Throw a custom NoDataException if there is no data

                     if (list.size() == 0) {

                            System.out.println("No data has been found");

                            throw new NoDataException();

                     }

 

                      //  Create and populate a CategoryDataset

                     Iterator iter = list.listIterator();

            DefaultCategoryDataset dataset = new DefaultCategoryDataset();

                     while (iter.hasNext()) {

                            WebHit wh = (WebHit)iter.next();

                dataset.addValue(new Long(wh.getHitCount()), "Hits", wh.getSection());

                     }//将数据集保存到Dataset对象
 

                     //  Create the chart object

                     CategoryAxis categoryAxis = new CategoryAxis("");

                     ValueAxis valueAxis = new NumberAxis("");//创建坐标轴

                     BarRenderer renderer = new BarRenderer();//创建Renderer

                     renderer.setItemURLGenerator(new StandardCategoryURLGenerator("xy_chart.jsp","series","section"));//创建URLGenerator.再不需要连接的情况下将第一个参数设置成"###"就可以了

            renderer.setToolTipGenerator(new StandardCategoryToolTipGenerator());//创建提示标签

 

                     Plot plot = new CategoryPlot(dataset, categoryAxis, valueAxis, renderer);//创建图表区域对象

                     JFreeChart chart = new JFreeChart("", JFreeChart.DEFAULT_TITLE_FONT, plot, false);

                     chart.setBackgroundPaint(java.awt.Color.white);//创建图表

 

                     //  Write the chart image to the temporary directory

                     ChartRenderingInfo info = new ChartRenderingInfo(new StandardEntityCollection());//该工具类上面没有介绍,在鼠标移动到图片时显示提示信息是用Map实现的,这些Map是用该类生成的。

                     filename = ServletUtilities.saveChartAsPNG(chart, 500, 300, info, session);//保存图表为文件

 

                     //  Write the image map to the PrintWriter

                     ChartUtilities.writeImageMap(pw, filename, info);//生成Map信息。这些信息写在pw的输出流中,这里的输出流就是Response.out。也就是直接输出到页面了

                     pw.flush();

 

              } catch (NoDataException e) {

                     System.out.println(e.toString());

                     filename = "public_nodata_500x300.png";

              } catch (Exception e) {

                     System.out.println("Exception - " + e.toString());

                     e.printStackTrace(System.out);

                     filename = "public_error_500x300.png";

              }

              return filename;

       }

二.图表显示:

<%

       ......

       String filename = WebHitChart.generateBarChart(dDate, session, new PrintWriter(out));//获得图片的文件名。注意该语句写在jsp文件(bar_chart.jsp)的开头,而用out的封装类作为参数,访问该页面后可以看到生成Map热点的内容输出再该页面的开头部分。也就是说最好是把这几句话写在页面有输出之前。

    String graphURL = request.getContextPath() + "/servlet/DisplayChart?filename=" + filename;//显示图片的Servlet全路径名,另外文件名作为该Servlet的参数

       ......

%>

......

<img src="<%= graphURL %>" width=500 height=300 border=0 usemap="#<%= filename %>">

 

src指定了servlet的全路径名,usermap指定了使用的热点。

Servlet必须在WEB-INF/web.xml文件中配置:

<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>

Servlet的作用就是将图片文件的二进制流数据写道response的输出流中,在客户端也就显示成了图片。

 

分享到:
评论
1 楼 sinototo 2009-02-26  
[b][/b][i][/i][u][/u]
引用
       

相关推荐

    Jfreechart学习笔记3-简单Line图形创建

    在本篇“JFreeChart学习笔记3-简单Line图形创建”中,我们将深入探讨如何使用JFreeChart库在Java环境中创建基本的线性图表。JFreeChart是一个强大的、开源的Java图表库,它允许开发者轻松地生成各种类型的图表,包括...

    Jfreechart学习笔记1-简单Pie图形创建

    **JFreeChart学习笔记1 - 简单Pie图创建** 在Java开发中,我们经常需要展示数据,而饼图(Pie Chart)是一种常见的数据可视化工具,尤其适用于展示各项比例关系。JFreeChart是一个强大的开源Java图表库,它提供了...

    Jfreechart学习笔记2-简单bar图形创建

    在本文中,我们将深入探讨如何使用JFreeChart库在Java中创建简单的柱状图,以及如何扩展到3D效果。JFreeChart是一个流行的开源图表库,适用于多种图表类型,包括条形图、线形图、饼图等。通过学习本文,你将能够利用...

    jfreechart学习笔记

    《JFreeChart学习详解》 JFreeChart是一个强大的Java库,用于生成高质量的图表,包括折线图、柱状图、饼图、散点图等多种类型。它在各种应用程序中广泛应用,尤其适合于Web应用程序中数据可视化的实现。本文将通过...

    jfreechart各类曲线图JSP代码

    饼图,柱形图,曲线图!JFreeChart是一组功能强大、灵活易用的Java绘图API,使用它可以生成多种通用性的...本文将通过引领读者学习在JFreeChart中饼图、柱状图和曲线图的进阶应用,来达到熟练使用JFreeChart的目的。

    JfreeChart 学习笔记

    ### JfreeChart 学习笔记:深度解析与应用 #### JFreeChart概览与核心功能 JFreeChart作为一款开源的JAVA项目,专为图表开发而设计,支持丰富的图表类型,包括饼图、柱状图(含普通及堆栈柱状图)、线图、散点图、...

    JSP利用JFreeChart生成折线图

    在Java Web开发中,JSP(JavaServer Pages)是一种用于创建动态网页的技术,而JFreeChart则是一个强大的Java图表库,能够帮助开发者生成各种复杂的图表,包括折线图。本教程将详细介绍如何在JSP中利用JFreeChart库来...

    JFreeChart学习笔记

    **JFreeChart学习笔记** JFreeChart是一款强大的Java图表库,它允许开发者在应用程序、Swing组件、Applet或Web应用中创建各种复杂的图表。这篇笔记将深入探讨JFreeChart的核心概念、使用方法以及常见图表类型,帮助...

    JfreeChart学习笔记

    在本学习笔记中,我们将深入探讨如何使用 JFreeChart 来构建这些图表,特别是混合图和动态时序图。 首先,构建一个 JFreeChart 图表的基本步骤涉及以下三个主要部分: 1. **创建面板容器**:通常,我们可以继承 `...

    JFreeChart+JSP实现统计图展示

    "JFreeChart+JSP实现统计图展示"是一个典型的Web应用程序开发案例,它结合了JFreeChart库、JavaServer Pages (JSP) 和Servlet技术,用于从SQL Server 2005数据库中提取数据并以图表的形式呈现。 **JFreeChart** 是...

    jFreeChart示例代码,封装成jsp标签

    总结起来,这个项目提供了一个便捷的方式,让 JSP 开发者能够利用 JFreeChart 创建美观且功能丰富的图表,而无需深入学习 JFreeChart 的底层细节。这对于提高开发效率和改善用户体验具有重要意义。如果你正在寻找一...

    JFreeChart学习资料.doc

    这份学习资料是针对 JFreeChart 的使用进行讲解,主要涵盖了如何在 Web 项目中集成 JFreeChart 以及创建不同类型的图表。 1. **Web 项目集成**: 在一个标准的 Web 项目中,为了展示 JFreeChart 生成的图表,我们...

    Struts 学习笔记 Struts 中扩展JfreeChart 笔记

    JfreeChart则是一个强大的Java图表库,能够帮助开发者创建各种类型的图表,如饼图、柱状图、线图等,广泛应用于数据分析和展示。 在Struts框架中扩展JfreeChart,主要是为了在Web应用中生成动态的、交互式的图表,...

    jfreechart中文学习文档

    - 提供了详细的源代码示例,帮助开发者学习如何使用 JFreeChart 创建图表。 #### 六、IDE 配置 本章介绍了如何在 Eclipse 和 NetBeans 中配置 JFreeChart。 ##### A.1 引言 简要介绍配置 JFreeChart 的必要性和...

    jfreechart-1.0.13报表通过JSP页面来显示

    在本篇文章中,我们将深入探讨如何利用JFreeChart 1.0.13版本,在JSP(JavaServer Pages)页面上创建和展示报表。首先,我们需要理解JSP的基本原理和JFreeChart的图表生成机制。 1. **JSP基础**: JSP是Java的一种...

    JFreeChart与JSP动态图表

    标题“JFreeChart与JSP动态图表”涉及的是在Java Web开发中利用JFreeChart库创建动态图表并与JSP(JavaServer Pages)结合的技术。JFreeChart是一个强大的开源Java库,用于生成高质量的2D图表,包括折线图、柱状图、...

    jfreechart 和jsp 结合折线图的一个例子

    结合JFreeChart和JSP,我们可以创建交互式的网页应用,用户可以直接在页面上查看和分析数据。这种技术广泛应用于数据分析、监控系统和业务报表等场景,使非技术人员也能直观理解复杂的数据信息。 通过阅读给出的...

Global site tag (gtag.js) - Google Analytics