- 浏览: 518502 次
- 性别:
- 来自: 深圳
文章分类
- 全部博客 (299)
- Oracle(pl/sql_Erp_Pro*C) (69)
- 设计模式 (4)
- spring (23)
- ext (17)
- apache开源项目应用 (4)
- jquery (16)
- 生活琐事 (8)
- 下载资源 (23)
- mysql (2)
- Eclipse使用积累 (5)
- 报表类(报表/图表) (13)
- php (4)
- Web多彩文本框 (3)
- json (4)
- jqgrid (2)
- ant (2)
- java算法积累 (8)
- EL表达式/JSTL (4)
- poi (3)
- gwt (2)
- 爬网第一步 (2)
- javascript (17)
- Javaweb (8)
- tomcat (1)
- flex (1)
- Java&DB (3)
- J2SE (7)
- linux (3)
- 数据结构 (1)
- dot net (5)
- struts (1)
- ibatis (1)
- log4j (1)
- 项目管理 (1)
- Java native interface(jni,jacob......) (5)
- applet (1)
- VB.net/C#.net/JNI (20)
- css (1)
- Sqlite (1)
- servlet (1)
- REST (1)
最新评论
-
wenhurena:
能不能给一下解压密码roki.work.2017@gmail. ...
Ebs解体新書と学習資料1 -
liutao1600:
楼主写的太好了,每天学习~~
Spring_MVC(6)测试 -
liutao1600:
太好了,每天学习你的文章~~~
Spring_MVC(3)表单页面处理 -
liutao1600:
学习了,太好了
Spring_MVC(2)控制层处理 -
liutao1600:
学习了~~~
Spring_MVC(1)构建简单web应用
Java开源项目中制作图表比较出色的就是JFreeChart了,相信大家都听说过,它不仅可以做出非常漂亮的柱状图,饼状图,折线图基本图形之外,还能制作甘特图,仪表盘等图表。在Web应用中可以为项目增色不少。JFreeChart技术成熟,完全是通过Java代码控制图表生成,掌握难度不大。但是它的一个缺点就是所有资源在服务器端生成,需要占用大量的服务器资源,而且图表以流的形式输送到客户端也占用了大量的网络资源。
对于服务器资源和网络资源吃紧的项目还不得不想办法,虽然JFreeChart非常的华丽,但是还好有Open Flash Chart,制作简单的柱状图,饼状图和折线图足够用,而且Flash的展示效果绝不比JFreeChart的差。项目地址是:http://teethgrinder.co.uk/open-flash-chart/
先说说Open Flash Chart的工作原理,不要看到Flash就害怕,OFC的开发包内就是一个flash文件,其实我们不需要改动原有的Flash,只需给Flash提供符合规范的数据即可。OFC所需的数据格式就是JSON,JSON不依赖于任何技术(Java,.NET和PHP都有生成JSON代码的工具),这就使得OFC更加Open。本文从Java角度出发,使用Struts2框架,来分析OFC的使用。
GoogleCode社区的一款开源插件为Java开发者使用OFC提供了JSON生成的专用工具,那就是jofc2,我可以使用jofc2采用类似JFreeChart的方式来组织代码,大大提升开发效率。该项目的地址是:http://jofc2.googlecode.com
项目按照Struts2的开发标准搭建,然后把OFC开发所需的flash文件,页面显示Flash的支持文件swfobject.js放到发布目录的相应位置,再将jofc2和其依赖的xstream的jar包放到WEB-INF/lib下并加入编译路径即可。
有这样一个需求:记录系统访问用户所使用的浏览器并用图表显示。那么需要在数据库中记录这样的信息,如图所示:
这里面记录了9种浏览器的系统访问量,现在我们要在页面中用OFC来显示它,首先对Struts2做配置。代码如下:
package xxx.app.action.chart; import java.util.ArrayList; import java.util.List; import java.util.Map; import javax.servlet.http.HttpServletResponse; import org.apache.struts2.ServletActionContext; import jofc2.model.Chart; import jofc2.model.axis.Label; import jofc2.model.axis.XAxis; import jofc2.model.axis.YAxis; import jofc2.model.elements.LineChart; import neo.app.action.BaseAction; public class OfcChartAction extends BaseAction { private Chart ofcChart; public Chart getOfcChart() { return ofcChart; } public String showChart() throws Exception{ //y轴数据集合-使用数量 List<Number> dataSet = new ArrayList<Number>(); //x轴数据集合-浏览器类型 List<Label> xLabel = new ArrayList<Label>(); //获取需要显示的数据集 List browserList = getServMgr().getVisitStatService().getBrowserStat(); for (int i = 0; i < browserList.size(); i++) { Map map = (Map) browserList.get(i); //填充x轴 dataSet.add((Integer) map.get("statCount")); //填充y轴 xLabel.add(new Label((String) map.get("statVar"))); } //设置X轴内容 XAxis labels = new XAxis(); labels.addLabels(xLabel); //设置Y轴显示值域:Range的三个参数含义为:坐标最小值,最大值和步进值 YAxis range = new YAxis(); range.setRange(0, 200, 10); //OFC折线图设置 LineChart lineChart = new LineChart(LineChart.Style.NORMAL); lineChart.addValues(dataSet); lineChart.setColour("#6666FF"); lineChart.setText("使用者数量"); //图表设置 Chart chart = new Chart("用户浏览器使用量分布"); chart.setXAxis(labels); chart.setYAxis(range); chart.addElements(lineChart); //打印JSON格式的文本 System.out.print(chart.toString()); HttpServletResponse response = ServletActionContext.getResponse(); response.setContentType("application/json-rpc;charset=utf-8"); response.setHeader("Cache-Control", "no-cache"); response.setHeader("Expires", "0"); response.setHeader("Pragma", "No-cache"); response.getWriter().write(chart.toString()); return null; } }
Service中获取数据我们使用Spring的JdbcTemplate进行。
//获取记录的浏览器信息 private static final String SQL_GET_BROWER_STAT = "select statVar,statCount from nd_stats where statType='browser'"; /** * 获取记录的浏览器信息 */ public List getBrowserStat() { return jt.queryForList(SQL_GET_BROWER_STAT); }
写好Action,我们简单配置一下,因为我们只是得到JSON文本,所以不必配置跳转,只需配置请求即可。
<action name="ofcChart" class="xxx.app.action.chart.OfcChartAction"> </action>
页面的JS代码也很简单。如下即可:
<script type="text/javascript" src="${base}/js/swfobject.js"></script> <script type="text/javascript"> var flashvars = {"data-file":"${base}/manage/stat/ofcChart!showChart.action"}; var params = {menu: "false",scale: "noScale",wmode:"opaque"}; swfobject.embedSWF("${base}/swf/open-flash-chart.swf", "chart", "600px", "400px", "9.0.0", "expressInstall.swf",flashvars,params); </script> <div id="chart"> </div>
这里需要多说几句,首先是路径,不能错了,错了就请求不到数据了。Swfobject.js是页面使用JS方式配置Flash显示的,比较方便,所有使用它了。设置一个div用于Flash的显示,这个id是embedSWF的第二个参数,不能忘写了。还有就是请求地址参数的问题,这里我们是方便测试就没有传递参数,而实际开发不可避免传递参数。参数传递时在请求地址后面按普通形式书写即可,只是&这个连接符需要转义,写成%26,其他就没有什么了。
我们得到的结果就是这样的,这是很普通的折线图。但是不比JFreeChart的差哦。
同时在控制台我们得到jofc2为我们生成的JSON文本。
{"is_thousand_separator_disabled":0,"is_decimal_separator_comma":0,"title":{"tex t":"用户浏览器使用量分布"},"y_axis":{"min":0,"steps":10,"max":200},"x_axis":{"la bels":{"labels":[{"text":"Safari"},{"text":"MSIE6X"},{"text":"MSIE7X"},{"text":" MSIE8X"},{"text":"Firefox"},{"text":"Chrome"},{"text":"Opera"},{"text":"Maxthon" },{"text":"Other"}]}},"num_decimals":2,"is_fixed_num_decimals_forced":0,"element s":[{"font-size":10,"text":"使用者数量","type":"line","values":[6,2,63,168,1,10, 1,0,0],"colour":"#6666FF"}]}
下面我们做柱状图,做个个性点的,用sketch类型。
//Sketch型柱状图设置 SketchBarChart sketchChart = new SketchBarChart(); sketchChart.setColour("#6666FF"); sketchChart.addValues(dataSet); sketchChart.setText("使用者数量"); //图表设置 Chart chart = new Chart("用户浏览器使用量分布"); chart.setXAxis(labels); chart.setYAxis(range); chart.addElements(sketchChart);
这样我们就得到了下面的显示效果,是不是很卡通,哈哈。
需要注意jofc2将sketch风格的柱状图单独写成了一个类,而使用普通风格的柱状图时不时这么进行的。
//柱状图Bar的集合 List<Bar> barList=new ArrayList<Bar>(); for (int i = 0; i < browserList.size(); i++) { Map map = (Map) browserList.get(i); //填充Bar,并给出提示 barList.add(new Bar((Integer) map.get("statCount")).setTooltip("#val#次")); //填充y轴 xLabel.add(new Label((String) map.get("statVar"))); } //柱状图设置 BarChart barChart=new BarChart(BarChart.Style.GLASS); barChart.addBars(barList); barChart.setColour("#6666FF"); barChart.setText("使用者数量"); //图表设置 Chart chart = new Chart("用户浏览器使用量分布"); chart.setXAxis(labels); chart.setYAxis(range); chart.addElements(barChart);
我们得到如下的柱状图。
最后一种是饼状图,下面我们来画饼。
//饼状图 PieChart pieChart = new PieChart(); for (int i = 0; i < browserList.size(); i++) { Map map = (Map) browserList.get(i); //填充x轴 dataSet.add((Integer) map.get("statCount")); //饼状图添加块 pieChart.addSlice((Integer) map.get("statCount"), (String) map.get("statVar")); } //饼状图设置 pieChart.setColours("#d01f3c", "#356aa0", "#C79810"); pieChart.setText("使用者数量"); pieChart.setRadius(180); //饼图的半径 pieChart.setTooltip("#val# / #total#<br>#percent#"); //图表设置 Chart chart = new Chart("用户浏览器使用量分布"); chart.setXAxis(labels); chart.setYAxis(range); chart.addElements(pieChart);
生成的饼状图如下:
OFC接收一个JSON格式的文本用来填充Flash,Flash解析这段文本就生成了漂亮的图表。当然OFC的设置还有很多,可以做出非常炫的效果,这里就不深入研究了,当然就是set一些属性罢了。最后我们还是看一下JFreeChart的吧。
发表评论
-
VB操纵Excel
2010-10-07 22:42 1594全面控制 Excel 首先创建 Excel ... -
转:java处理报表工具比较
2010-10-07 10:30 959试共同条件: 数据总数 ... -
Birt Report(Eclipse)
2010-09-21 13:01 1041英文http://www.eclipse.org/birt/p ... -
amchart配置文件学习
2010-08-23 17:22 1237margins控制留白 background里的file ... -
amcharts教程
2010-08-23 09:50 10410Joomla使用过程中使用 ... -
jFreechart柱图常用设置
2010-06-29 14:39 1423<%@ page contentType=&q ... -
JFreeChart教程二
2010-06-29 10:45 1365package test; import java.aw ... -
JFreeChart教程
2010-06-28 16:37 1460《转》 JFreeChart教程( ... -
jxl
2010-06-09 21:58 1803现在正在做的项目中涉及大量的Excel文件导出导入操作,都是使 ... -
jaspereport学习资料
2009-05-08 16:10 14601)定制报表格式。 有二种方式,一种就是写jrxml文件, ... -
按照指定模板生成excel写的workbook
2009-05-07 13:40 1872一篇文章 Java操作Excel之 ... -
转载:excel出力
2009-03-27 17:13 890public void toexcel(HashMap has ...
相关推荐
2. **引入库**:在PHP代码中引入Open Flash Chart的库文件,通常是`ofc_loader.php`。 3. **构建数据**:根据实际需求,创建PHP数组或对象,存储图表的数据和配置信息。 4. **生成图表**:调用Open Flash Chart的...
在压缩包文件"ofc"中,可能包含了Open Flash Chart的源代码、示例项目、文档和库文件,供开发者学习和参考。通过深入研究这些内容,开发者可以更好地理解和掌握Open Flash Chart的使用方法,从而在自己的ASP.NET项目...
4. **perl-ofc-library**、**perl-2-ofc-library**:这是Perl语言的Open Flash Chart接口库,允许Perl开发者通过简单的API调用来生成和定制图表。 5. **java-ofc-library**:Java版本的Open Flash Chart库,为Java...
本篇文章将详细介绍ofc图表示例一,带你领略其魅力。 首先,Open Chart Flash (ofc) 是基于ActionScript 3.0开发的,这意味着它可以直接在Adobe Flash Player或Adobe AIR环境中运行,适用于网页和其他富互联网应用...
Open Flash Chart 是一款免费的Web图表组件,它使用Flash技术来创建丰富的、动态的以及交互式的图表。在Web应用程序中,数据可视化是至关重要的,Open Flash Chart 提供了一种高效且灵活的方式来呈现各种类型的数据...
Open Flash Chart(简称OFC),是一个开源的flash报表组件。我们不仅可以免费使用,而且还可以修改源码,来达到我们想要的效果。客户端在得到数据以后,在Flash Player中渲染出报表图。 附带PDF说明文档,是中文版...
Open Flash Chart是一款强大的图表生成库,专为Web开发者设计,用于在ASP.NET环境中创建互动式、高质量的Flash图表。此1.0版本的发布对于那些希望在网站上展示数据但不熟悉JavaScript的开发者来说,是一个非常友好的...
解压后,你需要在项目中包含 Flash 文件(通常为 `ofl.swf`)以及 JavaScript 库文件(如 `ofc2.js`)。 - **HTML 集成**:在网页中通过 `<object>` 或 `<embed>` 标签嵌入 Flash 文件,并设置相关参数,如宽度、...
- 然后,利用JavaScript创建一个图表对象,例如`var chart = new OFC.Chart();`。 - 接着,加载`data.json`文件中的数据,可以使用Ajax请求获取,或者直接将数据字符串化写入JavaScript代码。 - 使用`chart....
本实例在IE6、IE7、IE8、Chrome、Firefox测试通过,在实际项目使用中,对可能出现的问题,尤其在IE6中无法显示flash图表,本人特撰写《Flash图表组件——使用Open Flash Chart 2.0的一些问题及解决办法》,具体访问...
`js-ofc-library`目录包含了JavaScript库,这使得在网页中与Open Flash Chart进行交互变得简单。通过JavaScript,开发者可以动态更新图表数据,实现交互式图表。该库提供了一系列API函数,用于创建图表对象、设置...
Open Flash Chart是一款强大的开源图表库,它利用Flash技术为Web开发者提供了创建交互式图表的强大工具。在这个实例中,我们将深入探讨如何使用Open Flash Chart进行图表的创建和应用。 Open Flash Chart的核心优势...
`python-ofc-library`和`ruby-ofc-library-pullmonkey`则是Python和Ruby的接口,使得这两个动态语言的开发者也能方便地利用Open Flash Chart的图表功能。 总的来说,Open Flash Chart是一个强大的图表库,其源代码...
Open Flash Chart 2(简称OFC2)是一款强大的开源图表生成库,专为创建交互式、动态的Flash图表而设计。它允许开发者通过JSON格式的数据来构建各种类型的图表,如折线图、柱状图、饼图等,广泛应用于数据分析、报表...
Open Flash Chart(OFC)是一个开源的Flash图表库,允许开发者创建丰富、交互性强的图表。而FlashBuilder 4作为Adobe官方推出的Flex开发工具,提供了强大的集成开发环境(IDE),使得编译和调试Flash应用变得更加...
在提供的压缩包"ofc"中,可能包含了Open Flash Chart 2的示例代码和资源文件。这些示例通常包括HTML文件和对应的JavaScript文件,演示如何配置和生成线性图、柱形图和饼状图。通过学习和分析这些示例,开发者能够...
将"data-file"设置为此JSON文件的URL,Open Flash Chart就能加载并显示相应的图表。 通过以上步骤,你已成功入门Open Flash Chart的使用。随着实践的深入,你可以掌握更多高级功能,如自定义颜色、形状、动画效果等...
"chart" 指的是图表功能,"flash_chart" 明确了它是基于Flash的图表库,"open" 和 "open_flash_chart" 强调其开源性质,而 "openflash_chart" 是项目名称的另一种拼写方式。 【压缩包子文件】: 1. "open-flash-...
Open Flash Chart是一款开源的Flash图表库,用于在Web应用程序中生成高质量、动态的图表。它使用ActionScript编写,可以通过简单的JavaScript API与服务器端数据进行交互,以创建各种类型的图表,如折线图、柱状图、...