amcharts应用

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

  

 

三、使用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.   
  6. <script type="text/javascript">  
  7.     // <![CDATA[       
  8.     var so = new SWFObject("statistic/line/amline.swf""amline""900""600""8""#FFFFFF");  
  9.     so.addVariable("path""statistic/line/");  
  10.     so.addVariable("settings_file", encodeURIComponent("statistic/line/day_settings.jsp?<%=Math.random()%>"));  
  11.     so.addVariable("data_file", encodeURIComponent("statistic/line/day_data.jsp"));  
  12.     so.write("flashcontent");  
  13.     // ]]>  
  14. </script>  
  15.  </body>  
四、完成
访问 http://localhost/amchartDemo/report!showDay.action  即可看到效果

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/267268.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

linux下makefile中cp,make与makefile 的理解

当我们写程序过程中存在多个文件之间有复杂的包含关系时&#xff0c;若修改了其中一个源文件&#xff0c;就重新编译所有文件&#xff0c;一般是不必要的&#xff0c;并且当文件很多时&#xff0c;就显得非常笨拙。所有包含该文件的文件需要重新编译&#xff0c;而其它无关系的…

keil用c语言怎么编辑器,用keil软件编写单片机程序的步骤

猜你感兴趣&#xff1a;新手教程&#xff1a;单片机的学习实践步骤运用单片机便是了解单片机硬件结构&#xff0c;以及内部资源的运用&#xff0c;在汇编或C语言中学会各种功用的初始化设置&#xff0c;以及完成各种功用的程序编制。 运用按钮输入信号&#xff0c;发光二极管显…

体重 年龄 性别 身高 预测鞋码_【新手扫盲】身高体重性别年龄身体素质影响玩滑板吗?...

很多新手在迈入滑板大门之前都会有诸多顾虑&#xff0c;以为滑板跟其他运动一样&#xff0c;门槛很高我想说&#xff0c;滑板是项自由友好的运动下到3岁小宝宝&#xff0c;上到60岁以上老人只要你想玩&#xff0c;那就可以参与进来没有任何因素能阻止你玩滑板1、你比他高吗&…

html5点击按钮出现弹窗 怎么实现_HTML5游戏开发过程中的二三事

文/ Luiu最近跟的一款项目是HTML5手游&#xff0c;在这个项目中遇到并解决了诸多问题&#xff0c;也学习到了很多项目开发过程中需要注意的事情。这个项目自立项到现在已经过了5个多月&#xff0c;如今项目研发已经过了早期的忙乱阶段&#xff0c;于是借此机会梳理下思绪&#…

HDU 2063 过山车【二分图最大匹配】

Problem DescriptionRPG girls今天和大家一起去游乐场玩&#xff0c;终于可以坐上梦寐以求的过山车了。可是&#xff0c;过山车的每一排只有两个座位&#xff0c;而且还有条不成文的规矩&#xff0c;就是每个女生必须找个个男生做partner和她同坐。但是&#xff0c;每个女孩都有…

科研入门之在web of science

ISI Web of Science是全球最大、覆盖学科最多的综合性学术信息资源&#xff0c;收录了自然科学、工程技术、生物医学等各个研究领域最具影响力的超过8700多种核心学术期刊。利用Web of Science丰富而强大的检索功能-普通检索、被引文献检索、化学结构检索&#xff0c;可以方便快…

手动生成 XML

2019独角兽企业重金招聘Python工程师标准>>> private void Button1_Click(object sender, System.EventArgs e) { //创建新的xml XmlDocument doc new XmlDocument(); doc.LoadXml("<company></company>"); //设置版本信息 XmlDeclaration x…

android 资源如何下沉,个推安卓手机报告: 华为一路领跑,OV下沉市场表现不俗

近日&#xff0c;国内专业的数据智能服务商个推(股票代码&#xff1a;每日互动 300766.sz)发布《 2019 年度安卓智能手机报告》&#xff0c;对华为、小米、OPPO、vivo、三星等国内主要智能手机品牌进行盘点。数据显示&#xff0c;华为手机 2019 年表现不俗&#xff0c;不仅以25…

ISA Server 2006 升级到 TMG2010

ISA Server的下个版本TMG2010已经发布有一段时间了&#xff0c;现在正在逐渐将原来的ISA Server 2006升级到TMG2010。由于TMG2010需要64位的CPU与Windows Server 2008操作系统&#xff0c;所以&#xff0c;如果原来的ISA Server 2006是安装在32位的CPU的服务器中&#xff0c;则…

nike附近门店查询_不止5折!200+入手Nike、adidas,比“11.11”还便宜!

此次劲浪体育的“劲享万购节”优惠折扣来的非常猛&#xff01;会长先把各种活动给大家整理一下这份《如何买更省钱的详细指南》大家赶紧拿好咯&#xff01;这次活动整体分为5大部分线下实体店劲浪官方微商城京东劲浪官方旗舰店会员积分翻倍兑换当现金直播尖货限时抢总结就是一句…

Android常用类库包介绍

为什么80%的码农都做不了架构师&#xff1f;>>> 在Android 类库中&#xff0c;各种包写成android.*的方式&#xff0c;重要包的介绍如下&#xff1a; android.app&#xff1a;提供高层的程序模型、提供基本的运行环境。 android.content&#xff1a;包含各种的对设…

fastdfs 吗 支持windows_主流开源文件存储系统-fastdfs是否支持windows?你可以选择minio...

首先答案是肯定的&#xff0c;fastdfs不支持windows。 其次建议你使用Minio一、引言一般来说文件存储花钱就选择阿里云oss、七牛云等产品&#xff0c;开源的话&#xff0c;目前开源的分布式文件存储系统非常多&#xff0c;上网一搜 "Ceph&#xff0c;GlusterFS,Sheepdog,L…

Android电视关闭的闪屏动画效果

老式电视机关闭的时候画面一闪消失的那个效果&#xff1a; 首先创建一个TVOffAnimation继承于Animation&#xff1a; 首先创建一个TVOffAnimation继承于Animation 然后在initialize里面设置一些参数import android.graphics.Matrix;import android.view.animation.Accelerat…

SocketServer源码学习(二)

SocketServer 中非常重要的两个基类就是&#xff1a;BaseServer 和 BaseRequestHandler在SocketServer 中也提供了对TCP以及UDP的高级封装&#xff0c;这次我们主要通过分析关于TCP的处理逻辑来对SocketServer模块进行一个很好的理解和学习 TCPServer TCPServer 继承了BaseServ…

430f149有几种封装类型_高速光调制器的发展与封装技术研究

共读好书汪冰 黄平 杨磊摘 要&#xff1a;文章分析了100 Gbps(以下简称100 G)以太网光通信光调制器及其封装的技术发展动向&#xff0c;对比分析了10 G/40 G/100 G高速光调制器及其封装的结构特点。通过对高速光调制原理的浅析&#xff0c;论述了40 G/100 G高速光调制器在100 …

vsftp账号_Linux入门-CentOS7安装vsftp

前言vsftpd是用于类Unix系统(包括Linux)的FTP服务器。那怎么搭建呢&#xff1f;请看下文在CentOS7 64位进行安装。为了调试顺利&#xff0c;关闭selinux&#xff0c;防火墙iptables一.yum安装vsftp# yum -y install vsftpd二.启动服务# systemctl start vsftpd.service三.配置文…

android n模拟器,BlueStacks推出Android N模拟器

原标题&#xff1a;BlueStacks推出Android N模拟器IT之家1月23日消息&#xff0c;相信有不少玩家都有过在电脑上玩手游的经历&#xff0c;打怪升级这类游戏在操作似乎还是交给键盘和鼠标比较高效&#xff0c;电脑端体验安卓游戏自然就要用到模拟器了&#xff0c;但是尴尬的是似…

为UIKeyboardTypeNumberPad增加自定义按键

在 iPhone 上面開發應用程式時, 在使用輸入鍵盤時, 或多或少都會遇到客制化鍵盤的問題, 這邊筆者以簡單的數字鍵盤來示範客制化的動作. 這部份我想網路上已經有不少 sample code , 但大部份基本上都是以 SDK 3.x 的版本去實作, 以"特定寫法"來實作客制化在 iOS4 會有…

车载安卓中控改鸿蒙,教你改装车子中控安卓大屏,看一遍你就会了,改完后低配秒变高配...

因为我这个车子年代比较久了&#xff0c;所以没有中控大屏&#xff0c;需要导航的时候我都是把手机放在出风口支架这个地方&#xff0c;这种磁吸的支架有时候过减速杠一震动就掉下来了&#xff0c;我又不想在上面粘什么东西&#xff0c;所以干脆就花几百块钱买了一个能够插手机…

pip 删除安装包_Python中PIP的快速指南

无论您是Python新手还是有经验的Python开发人员&#xff0c;不使用pip安装命令是不可能编写或开发Python应用程序的。在这篇文章中&#xff0c;我将对Pip进行详细介绍。Pip是Python Package Manager的缩写。当您在系统上安装python时&#xff0c;它附带了一组预定义的包&#x…