- 浏览: 174054 次
- 性别:
- 来自: 深圳
文章分类
- 全部博客 (104)
- JavaScript备忘 (11)
- Java编程 (23)
- struts框架 (3)
- hibernate框架 (0)
- ibatis框架 (2)
- C++编程 (2)
- 数据库 (8)
- 操作系统 (2)
- Extjs (0)
- 基于web的工作流引擎设计 (0)
- 开发异常备忘 (5)
- 项目管理工具 (6)
- Spring框架 (3)
- HTML (1)
- 项目架构 (1)
- 备忘 (20)
- 设计模式 (9)
- Disruptor (0)
- CQRS (0)
- DDD (0)
- Axon (0)
- JavaScript (1)
- 微信 (0)
- 新浪微博 (1)
- 软件备份 (2)
- AngularJS (1)
- 安全性 (1)
- Linux (2)
- 工具 (4)
- OSGI (1)
- idea (2)
- Docker (1)
- 测试相关 (0)
- WebService (1)
- 数据安全 (0)
- 移动开发 (0)
- springboot (1)
最新评论
-
larryscale:
zz_wangyuhoho 写道你这个工程跑不起来呀我测试过的 ...
Springmvc3+Spring3+MyBatis3 -
zz_wangyuhoho:
你这个工程跑不起来呀
Springmvc3+Spring3+MyBatis3 -
aeolusj:
var myAlert=alert;改为var myAlert ...
js 拦截alert对话框 -
skcks:
建行内部开发平台也是做了一个类似的封装用于ajax远程调用服务 ...
通用Ajax设计 -
qiuyu1990:
这个应该是 DWR的原理吧
通用Ajax设计
JFreeChart是JAVA平台上的一个开放的图表绘制类库。它完全使用JAVA语言编写,是为applications, applets, servlets 以及JSP等使用所设计。JFreeChart可生成饼图(pie charts)、柱状图(bar charts)、散点图(scatter plots)、时序图(time series)、甘特图 (Gantt charts)等等多种图表,并且可以产生PNG和JPEG格式 的输出,还可以与PDF和EXCEL关联。
JFreeChart目前是最好的java图形解决方案,基本能够解决目前的图形方面的需求。
今天给大家介绍一下如何在一个頁面中嵌入一个带热点的饼状图.如下图所示:
完整范例如下:
1. 在SSH框架中添加Jfreechart 所依賴的Jar包:jfreechart-1.0.9.jar和 jcommon-1.0.12.jar
2. 在Action 創建一個餅狀圖的DataSet對象,用來保存從數據庫讀取的數據.
package com.crms.web.dwr; import java.util.List; import org.jfree.data.general.DefaultPieDataset; import com.crms.biz.StatisticsBiz; import com.crms.pojo.Customerinfo; import com.crms.pojo.msms.Orderdetail; import com.crms.pojo.msms.Orders; import com.opensymphony.xwork2.ActionSupport; /** * 统计报表模块 * * @author Liyongbin * @date 2010-01-15 * */ public class StatisticsAction extends ActionSupport { private static final long serialVersionUID = -9195275764281964720L; private StatisticsBiz statisticsBiz; private List<Orderdetail> orderdetailList; private Customerinfo customerinfo; // 饼状图数据对象 private DefaultPieDataset pieDataSet = new DefaultPieDataset(); public StatisticsBiz getStatisticsBiz() { return statisticsBiz; } public void setStatisticsBiz(StatisticsBiz statisticsBiz) { this.statisticsBiz = statisticsBiz; } public List<Orderdetail> getOrderdetailList() { return orderdetailList; } public void setOrderdetailList(List<Orderdetail> orderdetailList) { this.orderdetailList = orderdetailList; } public Customerinfo getCustomerinfo() { return customerinfo; } public void setCustomerinfo(Customerinfo customerinfo) { this.customerinfo = customerinfo; } public DefaultPieDataset getPieDataSet() { return pieDataSet; } public void setPieDataSet(DefaultPieDataset pieDataSet) { this.pieDataSet = pieDataSet; } /** * 贡献分析--查询所有记录 */ public String queryOfferUp() { /** * 1.由从msms数据中查询到的用户ID, 2.再由用户ID从crms数据库获取用户的名称 3.将用户称显示在JSP中 */ String customerId = null; try { // 1.由从msms数据中查询到的用户ID orderdetailList = statisticsBiz.getOrderdetailService().queryAll(); // 设置迭代因子 Integer i = 0; // 将所有的用户ID(String),迭代替换成用户名称(String) for (Orderdetail orderdetail_2 : orderdetailList) { customerId = ((Orders) (orderdetail_2.getOrders())) .getCustomer_id(); // 得到用户的名称 customerinfo = statisticsBiz.getCustomerinfoService() .queryById(customerId); // 迭代替换 ((Orders) (orderdetailList.get(i).getOrders())) .setCustomer_id(customerinfo.getCustomerName()); // 给JFreeChart传数据 pieDataSet.setValue(customerinfo.getCustomerName(), orderdetail_2 .getSub_price()); i++; } // 传给JSP页面 //request_1.put("dataSet", dataSet); } catch (Exception e) { e.printStackTrace(); } return "success"; } @Override public String execute() throws Exception { return super.execute(); } /** * 用于超链接 * * @return */ public String success() { return "success"; } }
3. 配置struts.xml文件
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd"> <struts> <!-- 拦截struts的扩展名 --> <constant name="struts.action.extension" value="action,"/> <!-- 开发模式 --> <constant name="struts.devModel" value="true"/> value="crms"/> <package name="statistics" namespace="/statistics" extends="jfreechart-default"> <action name="userinfo" class="userinfoAction"> <result name="success"> /WEB-INF/jsp/index.jsp </result> <result name="error"> /login.jsp </result> </action> <action name="link_*" class="statisticsAction"> <result name="success"> /WEB-INF/jsp/statisticsReport/{1}.jsp </result> </action> </package> </struts>
4. 寫JSP頁面offerUp.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <%@ taglib uri="/struts-tags" prefix="s"%> <%@page import="org.jfree.data.general.DefaultPieDataset"%> <%@page import="org.jfree.chart.plot.PiePlot3D"%> <%@page import="java.awt.Font"%> <%@page import="org.jfree.chart.title.LegendTitle"%> <%@page import="org.jfree.chart.title.TextTitle"%> <%@page import="org.jfree.chart.JFreeChart"%> <%@page import="org.jfree.chart.labels.StandardPieToolTipGenerator"%> <%@page import="org.jfree.chart.imagemap.StandardURLTagFragmentGenerator"%> <%@page import="org.jfree.chart.urls.StandardPieURLGenerator"%> <%@page import="org.jfree.chart.entity.StandardEntityCollection"%> <%@page import="org.jfree.chart.ChartRenderingInfo"%> <%@page import="java.io.PrintWriter"%> <%@page import="org.jfree.chart.servlet.ServletUtilities"%> <%@page import="org.jfree.chart.ChartUtilities"%> <% String path = request.getContextPath(); String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() + path + "/"; %> <%--分析贡献 --%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <base href="<%=basePath%>"> <title>createDictionary</title> <meta http-equiv="pragma" content="no-cache"> <meta http-equiv="cache-control" content="no-cache"> <meta http-equiv="expires" content="0"> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> <meta http-equiv="description" content="This is my page"> <link href="jsp/../css/style.css" type="text/css" rel="stylesheet"> <style type="text/css"> .btnStyle { border: #2C59AA 1px solid; padding: 3px 2px 0px 5px; margin-left: 2px; width: 40px; height: 20px; FILTER: progid : DXImageTransform.Microsoft.Gradient ( GradientType = 0, StartColorStr = #ffffff, EndColorStr = #C3DAF5 ); cursor: hand; } #btnSave,#btnReturn,#btnHelp { float: left; } #button { float: right; } #operate div,th,tr td { font-size: 13px; } #condition { clear: both; } .statisticsIcon { background: url(images/statistics_report.png) no-repeat; margin-left: 10px; width: 43px; height: 40px; } /*饼状图*/ .caky { background-position: -88px -2px; } .caky_over { background-position: -88px -105px; } #showJfreechart,jfreechart{ float:left; } #statisticsReport{ height:10px; } /*导出office*/ .exportIcon{ background: url(images/office.gif) no-repeat; margin-left: 5px; width: 43px; height: 40px; } .export2Excel{ background-position: -2px -2px; } .export2Excel_over{ background-position: -2px -78px; } #exportSheet,#showJfreechart{ float:left; cursor:hand; } </style> <script type="text/javascript" src="js/jquery-1.3.2.js"></script> <script type="text/javascript"> $(document).ready(function(){ //统计图图标的响应事件 $("#showJfreechart").bind("click",function(){ var $content = $('#jfreechart'); if($content.is(":visible")){ $content.hide(1000); }else{ $content.show(1000); } }) //鼠标经过统计图标按钮 //鼠标离开按钮 $("#showJfreechart").hover(function(){ $(this).addClass("caky_over"); },function(){ $(this).removeClass("caky_over"); }) //导出Excel图标的响应事件 $("#exportSheet").bind("click",function(){ window.location.href="excel_offerUp"; }) //鼠标经过导出Excel图标按钮 //鼠标离开按钮 $("#exportSheet").hover(function(){ $(this).addClass("export2Excel_over"); },function(){ $(this).removeClass("export2Excel_over"); }) }); </script> </head> <body> <div id="page"> <div id="operate"> <div id="position"> 数据统计 >> <strong>分析客户贡献</strong> </div> <div id="button"> <div id="btnSave" class="btnStyle"> 保存 </div> <div id="btnReturn" class="btnStyle"> 返回 </div> <div id="btnHelp" class="btnStyle"> 帮助 </div> </div> </div> <div id="form"> <table class="query_form_table"> <tr> <th>客户名称</th> <td><input /></td> <th>年份</th> <td> <select> <option>全部</option> <option>2005</option> <option>2006</option> <option>2007</option> <option>2008</option> <option>2009</option> <option>2010</option> </select> </td> <td> <div class="statisticsIcon caky" id="showJfreechart"> </div> <div class="exportIcon export2Excel" id="exportSheet"> </div> </td> </tr> </table> <div id="statisticsReport"> <div id="jfreechart" style="display: none;"> <br/> <% //创建所需的数据 DefaultPieDataset data = new DefaultPieDataset(); data=(DefaultPieDataset)request.getAttribute("pieDataSet"); //创建3D饼状图的Plot对象 PiePlot3D plot = new PiePlot3D(data); plot.setLabelFont(new Font("隶书", Font.BOLD, 16)); //生成图表 JFreeChart chart = new JFreeChart("", JFreeChart.DEFAULT_TITLE_FONT, plot, true); //标题 chart.setTitle(new TextTitle("客户贡献统计图", new Font("黑体", Font.BOLD, 22))); //图例 LegendTitle legend = chart.getLegend(0); legend.setItemFont(new Font("宋体", Font.BOLD, 14)); //生成提示 plot.setToolTipGenerator(new StandardPieToolTipGenerator()); //设置热点链接 plot.setURLGenerator(new StandardPieURLGenerator("statistics/link_offerUpDetail!success")); // StandardEntityCollection entityCollection = new StandardEntityCollection(); //将图片放在临时目录下 ChartRenderingInfo info = new ChartRenderingInfo(entityCollection); PrintWriter pw = new PrintWriter(out); //720是图片长度,450是图片高度 String filename = ServletUtilities.saveChartAsPNG(chart,720,450,info,session); ChartUtilities.writeImageMap(pw, "map0", info, false); // String url = basePath+ "/servlet/DisplayChart?filename=" + filename;//request.getContextPath() pw.flush(); %> <img src="<%=url%>" alt="<%=url%>" width="750" height="450" usemap="#map0" border="1" /> </div> </div> </div> <div id="list"> <br /> <table class="data_list_table"> <tr> <th>编号</th> <th>客户名称</th> <th>订单金额(元)</th> </tr> <!-- 读取数据库开始 --> <s:iterator value="#request.orderdetailList" id="orderdetail" status="i"> <tr> <td class="list_data_text"><s:property value="#i.index+1"/></td> <td class="list_data_text"><s:property value="#orderdetail.orders.customer_id"/></td> <td class="list_data_text"><s:property value="#orderdetail.sub_price"/></td> </tr> </s:iterator> <!-- 读取数据库结束 --> </table> </div> </div> </body> </html>
5. 配置web.xml文件
<?xml version="1.0" encoding="UTF-8"?> <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> <!-- 显示JFreeChart--> <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> <filter> <filter-name>struts2</filter-name> <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter </filter-class> </filter> <!-- Struts2框架所拦截的文件后缀配置begin--> <filter-mapping> <filter-name>struts2</filter-name> <url-pattern>/statistics/*</url-pattern> </filter-mapping> </web-app>
6. 最后運行的結果如下圖所示:
发表评论
-
Springboot项目(整合WebService带协议头验证+WebSocket+Web+动态日志输出)
2020-05-12 14:05 1014环境配置: springboot 1.5.14 ... -
activiti5.18 默认查询的sql生成两个order by
2019-10-17 12:14 342<spring.version>4.2.4.RE ... -
springboot 定时任务重复执行
2019-06-04 17:35 2105开发一数据接收WebService,里面用到定时任务@Sc ... -
mybatis-generator自动生成代码[增加Service的生成]
2016-03-22 10:08 9759源码包见附件[Maven项目,在1.3.2基础上修改官方源码] ... -
网络状态监控
2014-06-27 12:56 591import java.io.BufferedReader; ... -
Spring MVC+Jquery Ajax 前后台传递Json对象
2014-03-29 10:02 6107关于Spring MVC3.X 接收和返回Json ... -
同时启动多个Tomcat服务器
2013-10-25 17:15 557我所用Tomcat服务器都为zip版,非安装版。以两个为例: ... -
md5+BASE64加密
2013-10-08 23:20 945import sun.misc.BASE64Encoder; ... -
用MD5对密码进行加密
2013-08-10 15:21 978package com.yong.bin.md5; i ... -
把CST格式的字符串转成普通的日期格式
2013-02-27 15:58 1517public static void main(Str ... -
Springmvc3+Spring3+MyBatis3
2012-11-27 15:03 1330最近写的一个三层框架:Springmvc3+Spring3+ ... -
Java技术——内部类
2012-11-18 17:35 877内部类 (inner class) 定义:在一个类中定义 ... -
自定义标签
2012-10-26 17:13 0<?xml version="1.0" ... -
log4j.properties
2012-10-24 12:32 0log4j.rootLogger=INFO, log4j ... -
通用Ajax设计
2012-10-21 10:20 1937利用Servlet和反射技术实现通用的Ajax调用设计,如下: ... -
导入Jar包的快捷键
2012-07-02 22:47 1127导入当前光标所在的地方未导入的Jar包: shift+ctrl ... -
Extjs grid 后台
2012-05-22 08:16 0public String gridRecordsByXML( ... -
Extjs 布局
2012-04-18 12:27 0<%@ page language="java ... -
FreeMarker在java项目中的应用
2011-02-15 21:34 3179一、体验FreeMarker FreeMar ... -
动态代理 [用cglib实现]
2011-02-09 10:28 1200一. 用cglib 实现java 的動態代理 ...
相关推荐
JFreeChart入门_-_使用JFreeChart开发Pie(饼状图)
本例是利用myEclipse + tomcat编译运行的,利用JfreeChart(从网上可下载的java的Jar包)编写的将数据以柱状图、饼状图等图表的形式显示在Jsp页面中
JFreeChart 饼状图 柱状图 柱状图 堆积柱状图 折线图 这个是我特地开发的一个用JFreeChart开发的用来画图的项目,已经开发成形了各种项目的各种需求的项目,并且自己可以拓展,根据需求修改代码,完成项目的需要。 ...
jfreechart 折线图、饼状图、柱状图在web页面上的应用,自己在网上找到点资料,然后写了个示例。 导入的myeclipse中部署即可。
flex jfreechart生成 饼状图 flex jfreechart生成 柱状图 flex jfreechart生成 曲线图 flex jfreechart生成 曲线图
JFreeChart生成3D饼状图及柱状图,可把图片生成在指定文件目录下
java制作jfreechart柱状图 饼状图 折线图 随机数字做的数据源 下载导入即可运行 内含jar包
虽然现在JS做报表和图形展示已经非常普遍和漂亮了,但是不能忽略有jfreechart 这样一种东西! 这些翻阅资料,在看以前写的示例时发现了关于jfreechart 的简单示例,不管怎样发上来分享一下!
java的JFreeChart编写柱状图和饼状图及3D饼状图方法
利用jFreeChart做曲线图、饼状图、柱状图 其中也包含如何引用jFreeChart的jar包
JFreeChart java 类实现无乱码的柱状图和饼状图实例,同时显示在jsp界面中的方法
jfreeChart生成的线状图,饼状图,柱状图
java利用JFreeChart实现各类数据统计图柱形图饼图折线图.pdf
有数据库,很全的代码,导入可以直接运行!
Struts2+JFreeChart+Myeclipse实现饼状图,柱状图,折线图。
jfreechart使用SqlServer2000做的饼状图,柱状图,折线图。 最近在学习jfreechart,根据网上的资料做了这3个小例子,学习用的,代码有点乱!
3D和平面饼状图!有详细的注释!
jfreechart饼状图
jfreechart雷达图,jfreechart蜘蛛网图,jfreechart带刻度的雷达图
java实现的 生成饼状图 生成单组柱状图 生成多组柱状图 生成堆积柱状图 生成折线图 里面包括了所需要的 jcommon-1.0.12.jar jfreechart-1.0.8a.jar