查看选中的软件的下载量,通过amchart报表工具显示出软件日下载量,月下载量以及年下载量,下面简单介绍,amchart在struts2中的应用。

amCharts提供JavaScript/HTML5图表。一套包括串行(列,栏,线,区,步线,平滑线,烛台,OHLC图),馅饼/甜甜圈,雷达/极性和XY /分散/气泡图。amCharts的图表提供了无与伦比的功能和性能,在一个高级的,符合标准的包里。

一、下载amchart

点击进入下载页面

选择你想使用的报表显示形状进行下载,较常用的主要是曲线图和饼图,这里以曲线图为例:Line & Area

二、配置struts2

新建一个Web Project,比如:amchartDemo

1. JAR包引用

这里使用的是struts2的最新JAR包:struts-2.2.1.1:

该版本的struts2需要用到的JAR包有7个,一个都不能少

可在下面工程中获取:struts-2.2.1.1\apps\struts2-blank\WEB-INF\lib

commons-fileupload-1.2.1.jar

commons-io-1.3.2.jar

freemarker-2.3.16.jar

javassist-3.7.ga.jar

ognl-3.0.jar

struts2-core-2.2.1.1.jar

xwork-core-2.2.1.1.jar

2. 配置web.xml (WebRoot\WEB-INF\web.xml)

Java代码  
  1. <filter>
  2. <filter-name>struts2</filter-name>
  3. <filter-class>
  4. org.apache.struts2.dispatcher.FilterDispatcher
  5. </filter-class>
  6. </filter>
  7. <filter-mapping>
  8. <filter-name>struts2</filter-name>
  9. <url-pattern>/*</url-pattern>
  10. </filter-mapping>

3. 配置struts.xml

可从 struts-2.2.1.1\apps\struts2-blank\WEB-INF\src\java\ 获取struts.xml,复制到你自己的项目工程(amchartDemo)的src下

Java代码  
  1. <struts>
  2. <package name="statistic" extends="struts-default">
  3. <action name="report" class="com.web.action.ReportAction">
  4. <result name="show-suc">/index.jsp</result>
  5. </action>
  6. </package>
  7. </struts>

4. 编写Action

根据以上struts.xml的配置,创建ReportAction类,以及需要的Bean:

Java代码  
  1. package com.web.action;
  2. import java.util.ArrayList;
  3. import java.util.List;
  4. import java.util.Map;
  5. import java.util.TreeMap;
  6. import com.model.beans.BaseBean;
  7. import com.opensymphony.xwork2.ActionContext;
  8. import com.opensymphony.xwork2.ActionSupport;
  9. public class ReportAction extends ActionSupport {
  10. public String showDay() throws Exception {
  11. List<BaseBean> daylist = new ArrayList<BaseBean>();
  12. /*================数据模拟==================*/
  13. daylist.add(createBean(1L,"软件A","#FF0000"));
  14. daylist.add(createBean(2L,"软件B","#FFC0CB"));
  15. daylist.add(createBean(3L,"软件C","#40E0D0"));
  16. daylist.add(createBean(4L,"软件D","#9ACD32"));
  17. daylist.add(createBean(5L,"软件E","#00FF7F"));
  18. /*=========================================*/
  19. ActionContext.getContext().getSession().put("chartDataList", daylist);
  20. return "show-suc";
  21. }
  22. /**
  23. * 创建模拟数据
  24. * @author Christy Lan
  25. * @version 1.0
  26. * @param
  27. * @return BaseBean
  28. * @exception
  29. */
  30. private BaseBean createBean(Long id, String softName, String color){
  31. BaseBean bean = new BaseBean();
  32. bean.setSoftId(id);
  33. bean.setSoftName(softName);
  34. bean.setColor(color);
  35. Map<Integer, Integer> dataMap = new TreeMap<Integer, Integer>();
  36. //一天24小时
  37. for(int i = 1; i <= 24; i++){
  38. dataMap.put(i, getRandom());//模拟每小时的下载量
  39. }
  40. bean.setDataMap(dataMap);
  41. return bean;
  42. }
  43. private Integer getRandom(){
  44. return (int)(Math.random()*1000);
  45. }
  46. }
该bean与数据库的表结构无关,而是对数据库中的数据进行了进一步的统计处理(使用oracle的统计函数),封装成这个BaseBean。主要就是对dataMap<时刻, 下载量>的封装
Java代码  
  1. package com.model.beans;
  2. import java.util.Map;
  3. public class BaseBean {
  4. private Long softId;//软件ID
  5. private String softName;//软件名字
  6. private String color;//该软件在amchart报表中显示的颜色
  7. private Map<Integer, Integer> dataMap;//存放统计信息
  8. public Long getSoftId() {
  9. return softId;
  10. }
  11. public void setSoftId(Long softId) {
  12. this.softId = softId;
  13. }
  14. public String getSoftName() {
  15. return softName;
  16. }
  17. public void setSoftName(String softName) {
  18. this.softName = softName;
  19. }
  20. public String getColor() {
  21. return color;
  22. }
  23. public void setColor(String color) {
  24. this.color = color;
  25. }
  26. public Map<Integer, Integer> getDataMap() {
  27. return dataMap;
  28. }
  29. public void setDataMap(Map<Integer, Integer> dataMap) {
  30. this.dataMap = dataMap;
  31. }
  32. }

三、使用amchart

1. 在WebRoot下新建一个目录 WebRoot/statistic/line

2. 解压amline_1.6.4.1.zip

a) 将 amline_1.6.4.1\amline 目录下的swfobject.js复制到statistic目录下(注:swfobject.js放于哪无所谓,关键是页面上的引用)

b) 将 amline_1.6.4.1\amline 目录下的amline.swf 复制到statistic/line目录下

c) 将 amline_1.6.4.1\amline 目录下的amline_settings.xml 复制到statistic/line目录下,同时,把amline_settings.xml改名为day_settings.jsp

3. 修改day_settings.jsp

a) 在day_settings.jsp的最开始处增加如下代码:

Java代码  
  1. <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
  2. <%@ taglib prefix="s" uri="/struts-tags" %>

b) 将<digits_after_decimal>2</digits_after_decimal> 改为

<digits_after_decimal>0</digits_after_decimal>

这里的数值表示小数点后的位数

c) 将<graphs></graphs>标签里的内容删除,替换成:

Java代码  
  1. <graphs>
  2. <s:iterator value="#session.chartDataList" status="st">
  3. <graph gid="<s:property value="#st.index"/>">
  4. <title><s:property value="softName"/></title>
  5. <line_width>2</line_width>
  6. <color><s:property value="color"/></color>
  7. <color_hover><s:property value="color"/></color_hover>
  8. <bullet>round_outlined</bullet>
  9. <balloon_text_color>000000</balloon_text_color>
  10. <balloon_text>
  11. <![CDATA[{title} on {series}: 【{value}次】]]>
  12. </balloon_text>
  13. <selected>true</selected>
  14. </graph>
  15. </s:iterator>
  16. </graphs>

4. 在statistic/line目录下新建day_data.jsp

Java代码  
  1. <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
  2. <%@ taglib prefix="s" uri="/struts-tags" %>
  3. <?xml version="1.0" encoding="UTF-8"?>
  4. <chart>
  5. <series>
  6. <s:iterator value="#session.chartDataList" status="st">
  7. <s:if test="#st.index==0">
  8. <s:iterator value="dataMap">
  9. <value xid="<s:property value="key"/>"><s:property value="key"/>时</value>
  10. </s:iterator>
  11. </s:if>
  12. </s:iterator>
  13. </series>
  14. <graphs>
  15. <s:iterator value="#session.chartDataList" status="st">
  16. <graph gid="<s:property value="#st.index"/>">
  17. <s:iterator value="dataMap">
  18. <value xid="<s:property value="key"/>"><s:property value="value"/></value>
  19. </s:iterator>
  20. </graph>
  21. </s:iterator>
  22. </graphs>
  23. </chart>

5. 补充:破解amchart

在statistic/line目录下新建amcharts_key.txt,内容为

AMCHART-LNKS-1966-6679-1965-1082

6. WebRoot/index.jsp
1) 引入JS
Java代码  
  1. <script type="text/javascript" src="<%=basePath %>/statistic/swfobject.js"></script>
2) amchart使用
Java代码  
  1. <body>
  2. <div id="flashcontent">
  3. <strong>You need to upgrade your Flash Player</strong>
  4. </div>
  5. <script type="text/javascript">
  6. // <![CDATA[
  7. var so = new SWFObject("statistic/line/amline.swf", "amline", "900", "600", "8", "#FFFFFF");
  8. so.addVariable("path", "statistic/line/");
  9. so.addVariable("settings_file", encodeURIComponent("statistic/line/day_settings.jsp?<%=Math.random()%>"));
  10. so.addVariable("data_file", encodeURIComponent("statistic/line/day_data.jsp"));
  11. so.write("flashcontent");
  12. // ]]>
  13. </script>
  14. </body>
四、完成
访问 http://localhost/amchartDemo/report!showDay.action  即可看到效果

转载于:https://www.cnblogs.com/yujizais/archive/2012/03/14/2395527.html

amcharts应用相关推荐

  1. Amcharts绑定新数据后不会刷新图表的解决办法

    重新给Amcharts绑定数据源时,只需要改变 LineChart1.DataSource的属性,无需加上 DataBind() ,否则显示的还是绑定前的图表,或者提示这个时期没有数据:No data ...

  2. amcharts 网页绘图插件

    Amcharts是一组js图表,你可以免费使用在你的网站和基于网络的产品(非开源). Amcharts可以从简单的json提取数据,也可以从动态数据读取生成,比如PHP, .NET, Ruby on ...

  3. Amcharts插件实现3D饼图

    2019独角兽企业重金招聘Python工程师标准>>> 主要引入两个js文件: pie.js和amcharts.js 实现的效果如下: <!DOCTYPE HTML PUBLI ...

  4. Amcharts 柱状图和线形图

    最近需要学习 Amcharts ,他的图表功能确实很强大.但是网上搜索到的教程很少,开始学起的确有点不方便.于是我决定把我学习的觉得好的途径,放到博客上. 下面的代码可以直接复制,但是文件要从官网上下 ...

  5. amcharts去除版权标志

    打开amcharts.js, 查找drb, 找到后,将drb:function(){......}程序{}中间内容清空, 或者改成drb:function(){return;}

  6. amCharts 报表(转)

    amCharts 是基于Flash的一套图表解决方法,界面比JFreeChart华丽很多,而且可以与用户交互,动画效果非常漂亮.官网:http://www.amcharts.com About AmC ...

  7. amcharts嵌入到flex中

    amcharts是比较优秀的图表制作工具,它的效果是其他图表工具所无法比拟的.但是amcharts只给我们提示一组图表的控件,没有给我们良好的控制组件和其他的表现形式,但是flex却有丰富的组件可用, ...

  8. 统计图表导入word,用到echarts,highcharts,amcharts,jfreechart

    功能介绍 需求由来 整理数据和图表,导入到一份规范化的word中 准备工作 需求并不是很明确,就先实现word导出,我采用的是freemarker 首先:搭建一个boot项目 添加pom中的包 < ...

  9. amcharts _ 2.7.6 实现动态数据展现

    老版的amcharts是基于flash的,新版的是javascript实现的,同样amcharts 2.7.6支持页面动态数据展现. 以下是方法: 一.首先去http://amcharts.com/d ...

最新文章

  1. vnr光学识别怎么打开_水晶光电:光学元件需求向好,光学创新打开成长新空间,未来可期...
  2. 【Linux 操作系统】阿里云服务器 操作实战 部署C语言开发环境(vim配置,gcc) 部署J2EE网站(jdk,tomcat)
  3. 找到二叉树中的最大搜索二叉子树
  4. Android之ListView的getItemViewType和getViewTypeCount
  5. Linux学习笔记(二)|常用命令
  6. symbian c++ 开发环境Carbide.c++搭建
  7. Kotlin学习记录1
  8. 初学者python笔记(re模块、正则表达式完全解析)
  9. Uber 宣布将香港最低打车费用上涨 80%, 最低 45 港币
  10. jQuery学习笔记(二)
  11. 0宽字符加密_艺术鬼才!Unicode 字符还能这么玩?
  12. 耳机煲机软件测试自学,耳机煲机工具Test Tone Generator蹂躏新耳机教程
  13. Centos 设置开机自动启动脚本
  14. Centos7.5系统部署禅道协调管理系统以及配置优化
  15. 调音台、声卡、视频采集卡技术参数
  16. 【HTML】html基本标签-1(文字,列表,图片标签)
  17. 运载火箭飞行控制系统设计
  18. 电阻器阻值的标称方法介绍
  19. Matlab图形绘制(三)图形样式、标注、题字;fplot函数
  20. 数仓 - 促销敏感度、评论敏感度

热门文章

  1. Georgia and Bob POJ - 1704 阶梯Nim
  2. Java List与数组之间的转换
  3. 一个比较笨的全文搜索的例子(分析结构用)-模糊查找
  4. Web开发编程实用手册
  5. vux 组件库首次使用安装
  6. Oracle 查询库中所有表名、字段名、字段名说明,查询表的数据条数、表名、中文表名...
  7. java/android 做题中整理的碎片小贴士(12)
  8. bzoj4033 [HAOI2015]树上染色
  9. U盘基本处理,U盘与移动固态硬盘
  10. keil5中文乱码的解决