- 浏览: 229914 次
- 性别:
- 来自: 武汉
最新评论
-
spp_1987:
org.springframework.beans.facto ...
Hibernate4之多对多双向关联 -
spp_1987:
后台保存订单下面 有很多订单 调了 对应什么方法 实现的?
Hibernate4之多对多双向关联 -
spp_1987:
订单 和 商品之间 有中间表存在吗???
Hibernate4之多对多双向关联 -
spp_1987:
跟 官方 hibernate4.2.5提供 的 manytom ...
Hibernate4之JPA规范配置详解 -
zhuguopei_java:
谢谢。楼主你这是解释源码吗
Struts2中action接收参数的三种方法及ModelDriven和Preparable接口结合JAVA反射机制的灵活用法
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
首先把OFC的java支持包导入到struts2的工程里面,我这里用的是最新的jofc2-1.0-0.jar,然后把OFC需要的Flash文件expressInstall.swf和open-flash-chart.swf还有一个js文件swfobject.js导入到你的项目里,那么一个Struts2整合OFC项目已经部署好了,接下来是配置,是不是很方便很简洁呢?
这是显示Flash图表的显示页面,这里我只例举了三种风格的图表:
这是专门为OFC配置的result的type,会在后面的struts.xml里面用到。
只需要这样在struts.xml里面配置result就行了
接下来是在Action后台利用jofc类库来组织json数据利用response返回给页面从而生成漂亮的图表
下面是生成的图表截图:
对于服务器资源和网络资源吃紧的项目还不得不想办法,虽然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
首先把OFC的java支持包导入到struts2的工程里面,我这里用的是最新的jofc2-1.0-0.jar,然后把OFC需要的Flash文件expressInstall.swf和open-flash-chart.swf还有一个js文件swfobject.js导入到你的项目里,那么一个Struts2整合OFC项目已经部署好了,接下来是配置,是不是很方便很简洁呢?
这是显示Flash图表的显示页面,这里我只例举了三种风格的图表:
<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>open-flash-chart</title> <script type="text/javascript" src="flashchart/swfobject.js"></script> <script type="text/javascript"> var barChartData = {"data-file":"flashchart/barChart.action"}; var lineChartData = {"data-file":"flashchart/lineChart.action"}; var pieChartData = {"data-file":"flashchart/pieChart.action"}; var params = {menu: "false",scale: "noScale",wmode:"opaque"}; swfobject.embedSWF( "flashchart/open-flash-chart.swf", //open-flash-chart图标显示组件 "barChart_div", //将图表显示到指定的DIV中 "600", //图表宽度 "400", //图表高度 "9.0.0", //指定flash播放器版本 "flashchart/expressInstall.swf", //flashplayer检查提示安装程序 barChartData, //从服务器端装载JSON格式的图表数据 params ); swfobject.embedSWF( "flashchart/open-flash-chart.swf", //open-flash-chart图标显示组件 "lineChart_div", //将图表显示到指定的DIV中 "600", //图表宽度 "400", //图表高度 "9.0.0", //指定flash播放器版本 "flashchart/expressInstall.swf", //flashplayer检查提示安装程序 lineChartData, //从服务器端装载JSON格式的图表数据 params ); swfobject.embedSWF( "flashchart/open-flash-chart.swf", //open-flash-chart图标显示组件 "pieChart_div", //将图表显示到指定的DIV中 "600", //图表宽度 "400", //图表高度 "9.0.0", //指定flash播放器版本 "flashchart/expressInstall.swf", //flashplayer检查提示安装程序 pieChartData, //从服务器端装载JSON格式的图表数据 params ); </script> </head> <center> <body> <h1>柱状图玻璃效果图表</h1> <div id="barChart_div"></div> <h1>折线图表</h1> <div id="lineChart_div"></div> <h1>折线图表</h1> <div id="pieChart_div"></div> </body> </center> </html>
这是专门为OFC配置的result的type,会在后面的struts.xml里面用到。
public class OfcResultType extends StrutsResultSupport{ private static final long serialVersionUID = -904262813914309932L; private static final String OFC_ENCODING = "UTF-8"; protected void doExecute(String arg0, ActionInvocation inv) throws Exception { Chart chartData = (Chart) inv.getStack().findValue("ofcChart"); HttpServletResponse response = ServletActionContext.getResponse(); response.setContentType("application/json-rpc;charset=" + OFC_ENCODING); response.setHeader("Cache-Control", "no-cache"); response.setHeader("Expires", "0"); response.setHeader("Pragma", "No-cache"); String json = chartData.toString(); response.setContentLength(json.getBytes(OFC_ENCODING).length); PrintWriter out = response.getWriter(); out.print(json); out.flush(); out.close(); } }
只需要这样在struts.xml里面配置result就行了
<constant name="struts.devMode" value="true" /> <package name="ofc" extends="struts-default"> <result-types> <result-type name="ofcChart" class="com.chou.ofc.OfcResultType"/> </result-types> </package> <package name="flashchart" namespace="/flashchart" extends="ofc"> <action name="*" class="com.chou.web.FlashChartAction" method="{1}"> <result type="ofcChart"/> </action> </package>
接下来是在Action后台利用jofc类库来组织json数据利用response返回给页面从而生成漂亮的图表
public class FlashChartAction extends ActionSupport { private static final long serialVersionUID = -51015983910941007L; private Chart ofcChart; public Chart getOfcChart() { return ofcChart; } public String barChart() throws Exception { // y轴数据集合-使用次数 List<Number> ySet = new ArrayList<Number>(); // x轴数据集合-浏览器类型 List<String> xLabel = new ArrayList<String>(); // 填充y轴 for (int i = 0; i < 7; i++) { ySet.add(i * 100); } // 填充x轴 xLabel.add("360Safe"); xLabel.add("Safari"); xLabel.add("IE6"); xLabel.add("Opera"); xLabel.add("Firefox"); xLabel.add("IE9"); xLabel.add("Chrome"); // 设置X轴内容 XAxis labels = new XAxis(); labels.setLabels(xLabel); // 设置Y轴显示值域:Range的三个参数含义为:坐标最小值,最大值和步进值 YAxis range = new YAxis(); range.setRange(0, 1000, 100); //玻璃效果柱状图 //BarChart chart=new BarChart(BarChart.Style.GLASS); //Sketch效果柱状图设置 SketchBarChart chart = new SketchBarChart(); chart.addValues(ySet); chart.setColour("#6666FF");//折线的颜色 chart.setText("使用者数量"); // 图表设置 ofcChart = new Chart("用户浏览器使用量分布"); ofcChart.setXAxis(labels); ofcChart.setYAxis(range); ofcChart.addElements(chart); return SUCCESS; } public String lineChart() throws Exception { // y轴数据集合-使用次数 List<Number> ySet = new ArrayList<Number>(); // x轴数据集合-浏览器类型 List<String> xLabel = new ArrayList<String>(); // 填充y轴 for (int i = 0; i < 7; i++) { ySet.add(i * 100); } // 填充x轴 xLabel.add("360Safe"); xLabel.add("Safari"); xLabel.add("IE6"); xLabel.add("Opera"); xLabel.add("Firefox"); xLabel.add("IE9"); xLabel.add("Chrome"); // 设置X轴内容 XAxis labels = new XAxis(); labels.setLabels(xLabel); // 设置Y轴显示值域:Range的三个参数含义为:坐标最小值,最大值和步进值 YAxis range = new YAxis(); range.setRange(0, 1000, 100); //折线图设置 LineChart chart = new LineChart(LineChart.Style.NORMAL); chart.addValues(ySet); chart.setColour("#6666FF");//柱子的颜色 chart.setWidth(3);//折线宽度 chart.setText("使用者数量"); // 图表设置 ofcChart = new Chart("用户浏览器使用量分布"); ofcChart.setXAxis(labels); ofcChart.setYAxis(range); ofcChart.addElements(chart); return SUCCESS; } public String pieChart() throws Exception { // y轴数据集合-使用次数 List<Number> ySet = new ArrayList<Number>(); // x轴数据集合-浏览器类型 List<String> xLabel = new ArrayList<String>(); // 填充y轴 for (int i = 0; i < 7; i++) { ySet.add(i * 100); } // 填充x轴 xLabel.add("360Safe"); xLabel.add("Safari"); xLabel.add("IE6"); xLabel.add("Opera"); xLabel.add("Firefox"); xLabel.add("IE9"); xLabel.add("Chrome"); // 设置X轴内容 XAxis labels = new XAxis(); labels.setLabels(xLabel); // 饼状图添加块:Range的三个参数含义为:最小值,最大值和步进值 YAxis range = new YAxis(); range.setRange(0, 1000, 100); //饼状图设置 PieChart chart = new PieChart(); chart.addValues(ySet); chart.setColours("#d01f3c", "#356aa0", "#C79810","#6666FF"); chart.setRadius(180); //饼图的半径 chart.setText("使用者数量"); chart.setTooltip("#val# / #total#<br>#percent#"); // 图表设置 ofcChart = new Chart("用户浏览器使用量分布"); ofcChart.setXAxis(labels); ofcChart.setYAxis(range); ofcChart.addElements(chart); return SUCCESS; } }
下面是生成的图表截图:
发表评论
-
Struts2远程执行漏洞
2013-01-25 22:44 2071Struts2转码有个bug,可以导致应用挂掉(也可以执行类似 ... -
Struts2整合之CKeditor和CKfinder
2012-07-11 17:29 3297先从官网上下载好最新的CKeditor和CKfinder包之后 ... -
Struts2之上传下载和页面渲染图片功能
2012-07-06 15:18 1793Struts2的上传下载是整合了commons-fileupl ... -
Struts2常用的数据标签
2012-06-30 16:24 1438<s:property /> <s:pr ... -
Struts2常用的集合控制标签
2012-06-30 15:56 2001<s:iterator/>迭代器标签 迭代器标签被 ... -
Struts2标签之token防止表单重复提交
2012-06-29 16:57 2086Struts2的token标签防止表单重复提交的思路是这样的: ... -
Struts2常用的UI标签
2012-06-29 17:03 1760<s:textfield />标签的label属性 ... -
Struts2中OGNL、ActionContext和值栈及线程安全浅析
2012-06-27 17:35 3142值栈(ValueStack) Struts2将OGNL ... -
Struts2之OGNL表达式中#,$,%的用法区别
2012-06-25 22:57 2563struts2 井号,星号,百分号 “#”主要有三种用途: 1 ... -
Struts2精萃之interceptor
2012-06-25 01:00 1908下面这段话能完美诠释拦截器的含义: 拦截器是AOP中的概念, ... -
Struts2的服务器端的四种输入校验方式
2012-06-24 16:34 2668Struts2的服务器端验证框架有四种方式校验,一种是利用do ... -
Struts2的客户端校验方式及自带的13种校验器
2012-06-24 16:22 2608如果要使用Struts2的验证框架,首先要开启这个拦截器。在 ... -
Struts2之国际化i18N配置
2012-06-23 19:19 3274在struts2中需要做国际化的有: jsp页面的国际化,a ... -
Struts2之Web应用中文乱码问题的6种解决方法
2012-06-23 17:29 1560在web应用中通常用下面几种方法解决中文问题: 1.HTM ... -
Struts2配置精要之struts.xml( global和default的配置)
2012-06-23 16:48 5046下面这个struts.xml囊括了所有可能用到的标签用法,例如 ... -
Struts2配置精要之常量constant配置详解(包括零配置Convention 的常量)
2012-06-18 02:30 4180这是目前为止收集的stru ... -
Struts2配置精要之Result Types(Struts2.3.4)
2012-06-17 19:36 10407struts2.3.4的Predefined Result ... -
Struts2配置精要之defaultStack与paramsPrepareParamsStack
2012-06-17 17:56 4252在Struts2.3.4的struts-default.xml ... -
Struts2中action接收参数的三种方法及ModelDriven和Preparable接口结合JAVA反射机制的灵活用法
2012-06-17 00:48 4754Struts2中Action接收参数的方法主要有以下三种: ... -
Struts2原理浅析
2012-06-16 16:12 2135JavaEE把MVC设计模式引入 ...
相关推荐
集成OpenFlashChart2和Struts2能够提供一种高效的方法来在Java Web应用程序中动态生成交互式的蜡烛图。开发人员可以利用这种组合来快速创建实时的金融数据可视化工具,或者任何需要展示时间序列数据的场景。通过这个...
总之,OpenFlashChart以其强大的功能和灵活性,为Web开发中的动态图表展示提供了解决方案。通过合理利用其API和异步更新特性,我们可以创建出流畅、无闪烁的多图表应用,特别是在实时数据监控场景下,能提供优秀的...
5. **交互性**:OpenFlashChart的图表是动态和交互的,用户可以鼠标悬停查看数据详情,点击数据点进行筛选,甚至可以通过拖动轴来改变数据范围。 6. **API使用**:OpenFlashChart提供了一套JavaScript API,允许在...
在实际开发中,C#程序员可以结合ASP.NET或其他Web框架,利用OpenFlashChart创建动态图表服务。例如,可以将图表数据从数据库中读取,然后以JSON格式发送给前端。这样,OpenFlashChart就成为了一个强大的工具,帮助...
JavaScript API是OpenFlashChart的重要组成部分,它允许开发者在不刷新页面的情况下动态更新图表,如响应用户的操作或者根据服务器的新数据实时刷新图表。 6. **切克--OpenFlashChart12.22** 这个文件名可能指的...
在.NET环境中,我们可以借助OpenFlashChart2库来生成动态的图表,并将其嵌入到网页中,提供数据可视化的能力。本实例是关于如何使用OpenFlashChart2与JavaScript协同工作,以实现客户端与服务器端的交互。 在.NET...
OpenFlashChart是一款强大的开源JavaScript图表库,用于在Web页面上创建动态、美观的图表。它使用Flash技术,但通过JavaScript接口与网页交互,使得开发者能够轻松地生成各种类型的图表,如折线图、柱状图、饼图、...
在.NET环境中,可以通过使用其对应的DLL文件来与服务器端代码进行交互,从而生成动态图表。本文将深入探讨OpenFlashChart在.NET环境中的使用方法以及相关JS文件的作用。 首先,`openflashchart.dll`是.NET平台上的...
图表控件openflashchart的Demo源码 OpenFlashChart是一个开源的报表制作组件,该组件能够自动生成一个好看的、动态的flash报表;该组件使用flash展示报表能够很好的做到与浏览器进行集成,目前浏览器基本都能很好的...
OpenFlashChart是一款开源的Flash图表库,它允许开发者通过简单的JavaScript API创建出丰富多彩的、交互式的图表。这个库以其强大的自定义能力和丰富的图表类型,被广泛应用于网页报告、数据分析以及可视化应用中。...
首先,OpenFlashChart的核心优势在于其能够生成具有动态效果和丰富样式的图表,包括折线图、柱状图、饼图、散点图等多种类型。这些图表在网页中以Flash形式展示,不仅视觉效果出色,而且支持实时数据更新和丰富的...
OpenFlashChart是一款优秀的开源图表工具,专为开发者设计,用于创建动态、美观的数据可视化效果。在Java、Flash技术的支持下,它能够呈现曲线图、柱状图、饼图等多种图表类型,非常适合在Web应用程序中展示数据。...
OpenFlashChart(OFC)是一种基于Flash的开源图表库,它允许开发者创建各种高质量、交互式的图表。在本文中,我们将深入探讨如何使用OpenFlashChart实现在网页上展示多个图表,并实现无闪烁的自动刷新功能,同时还会...
OpenFlashChart是一款强大的开源图表库,它使用Flash技术来生成高质量、交互式的图表。这个C#示例是针对ASP.NET开发者的,展示了如何在.NET环境中集成OpenFlashChart库,以创建动态、美观的数据可视化效果。 在ASP...
OpenFlashChart是一款强大的开源Flash图表库,用于生成各种动态、美观的数据可视化图表。这个控件在Web开发中尤其受欢迎,因为它允许开发者通过简单的API创建出交互式的统计图表,且兼容多种编程语言,如PHP、ASP...
在OpenFlashChart中,动态报表可以通过Ajax技术实现,这样可以仅刷新图表,而不是整个页面,提高用户体验。 要开始创建一个OpenFlashChart动态报表,你需要以下几个步骤: 1. **设置环境**:确保你的开发环境中...
OpenFlashChart是一款强大的开源Flash图表库,用于在Web应用程序中创建高质量、交互式的图表。它以其易用性和灵活性而受到开发者的青睐,特别是在需要展示数据可视化时。在提供的压缩包"OpenFlashChart Library"中,...
- **动画和交互**:介绍如何实现图表的动态效果和用户交互功能。 2. **OpenFlashChart英文文档** 英文文档通常更为全面,可能包含更多细节和更新的内容。对于一些高级特性和最新功能,英文文档通常是获取信息的...
OpenFlashChart的亮点在于它使用简单,只需通过JSON或XML格式的数据就可以生成动态图表。 **1. Flash技术应用** OpenFlashChart基于Adobe Flash技术,这意味着它可以创建高度动画化的图表,并在大多数现代浏览器上...