jFreeChart(动态web应用)

系统 1395 0
 

JFreeChart 1.0.2 的动态应用,根据数据库中的数据生成饼图:(部分来自网页)

本文用的是JFreeChart 1.0.2 (根据版本不同需要根据类修改部分代码)

下载:http://www.jfree.org/jfreechart/index.html

下载后解压jfreechart-1.0.2.zip,会发现在lib下有几个jar文件,本文只介绍生成饼图的例子:

1 ,首先将lib下的jcommon-1.0.5.jar和jfreechart-1.0.2.jar放到你的项目的lib下面,

2 ,一个用于实验的表:(client)

id

client_name

1

一级分销商

2

二级分销商

3

三级分销商

3 ,建立一个用于查询数据的类:

package com.drp.statreport;

import java.sql.*;

import java.util.HashMap;

import java.util.Map;

import com.drp.util.DB;// 我的一个用于链接数据库的javabeen

/**

 * 统计报表管理类,采用单例模式

 * @author qiao

 */

public class StateReportManger {

   private static StateReportManger intense = new StateReportManger();

   private StateReportManger(){}

   public static StateReportManger getIntense(){

        return intense;

   }

   /**

    * 返回分销商级别数

    * @return 返回Map<client_name,数量> eg:("一级分销商,10","二级分销商,10")

    */

   public Map getClientLevelCount(){

        Map map = new HashMap();

        String sql = "select client_name,count(id) as  qty from  client  group by  client_name ";

        Connection conn = null;

        Statement stmt = null;

        ResultSet rs = null;

        try{

           conn = DB.getConn();// 自己的javabeen链接数据库

            stmt = conn.createStatement();

            rs = stmt.executeQuery(sql);

            while(rs.next()){     

                 map.put(rs.getString("client_name"), rs.getInt("qty"));

            }

       }catch(SQLException e){

            e.printStackTrace();

        }finally{

            DB.close(rs);//javabeen 用于关闭资源

            DB.close(stmt);

            DB.close(conn);

        }

     return map;

   }

}

4 ,建立一个servlet输出图形:

Web.xml 中添加如下配置:

<servlet>

    <servlet-name>ChartDemoServlet</servlet-name>

    <servlet-class> com.drp.util.servlet.ChartDemoServlet</servlet-class>

 </servlet>

<servlet-mapping>

    <servlet-name>ChartDemoServlet</servlet-name>

    <url-pattern>/servlet/ChartDemoServlet</url-pattern>

 </servlet-mapping>

package com.drp.util.servlet;

import java.io.FileOutputStream;

import java.io.IOException;

import java.text.DecimalFormat;

import java.text.NumberFormat;

import java.util.*;

import javax.servlet.*;

import javax.servlet.http.HttpServlet;

import org.jfree.data.*;

import org.jfree.data.general.DefaultPieDataset;

import org.jfree.chart.*;

import org.jfree.chart.labels.StandardPieSectionLabelGenerator;

import org.jfree.chart.plot.PiePlot3D;

import com.drp.statreport.StateReportManger;

/**

 * 演示通过servlet直接输出图表

 * @author

 */

public class ChartDemoServlet extends HttpServlet {

     public void service(ServletRequest req, ServletResponse res)

         throws ServletException, IOException

     {

         res.setContentType("image/jpeg");

         DefaultPieDataset data = getDataSet();

         JFreeChart chart = ChartFactory.createPieChart3D(" 分销商分布",data,true,false,false);

         PiePlot3D plot=(PiePlot3D)chart.getPlot();

         // 图片中显示百分比:默认方式

         //plot.setLabelGenerator(new StandardPieSectionLabelGenerator(StandardPieToolTipGenerator.DEFAULT_TOOLTIP_FORMAT));

         // 图片中显示百分比:自定义方式,{0} 表示选项, {1} 表示数值, {2} 表示所占比例 ,小数点后两位

         plot.setLabelGenerator(new StandardPieSectionLabelGenerator("{0}={1}({2})", NumberFormat.getNumberInstance(), new DecimalFormat("0.00%")));

         // 图例显示百分比:自定义方式, {0} 表示选项, {1} 表示数值, {2} 表示所占比例

         plot.setLegendLabelGenerator(new StandardPieSectionLabelGenerator("{0}={1}({2})"));

         ChartUtilities.writeChartAsJPEG(res.getOutputStream(),

                   1.0f,chart,400,300,null);

     }

     /**

      * 获取一个演示用的简单数据集对象

      * @return

      */

     private static DefaultPieDataset getDataSet() {

         DefaultPieDataset dataset = new DefaultPieDataset();

         Map map = StateReportManger.getIntense().getClientLevelCount(); // 调用getClientLevelCount()得到所有的数据

         for(Iterator iter = map.entrySet().iterator();iter.hasNext();){// 遍历,用到Map的. entrySet ()方法

              Map.Entry entry = (Map.Entry) iter.next();

              dataset.setValue((String)entry.getKey(), Double.parseDouble(String.valueOf(entry.getValue())));// 设置数据

         }

         return dataset;

     }

}

5 ,在地址栏输入 http://localhost:8080/ (你的项目名称)/servlet/ChartDemoServlet 就可以看到如下图:
jFreeChart(动态web应用)

jFreeChart(动态web应用)


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论