基于ssh框架的highcharts前后台数据交互实例
Highcharts 是一个用纯JavaScript编写的一个图表库, 能够很简单便捷的在web网站或是web应用程序添加有交互性的图表,并且免费提供给个人学习、个人网站和非商业用途使用。HighCharts支持的图表类型有曲线图、区域图、柱状图、饼状图、散状点图和综合图表。
官网:http://www.highcharts.com/,官网上的数据都是写死的,作为一名菜鸟,搞了很久才知道怎么传递,现特地写出来,希望能对大家有帮助。
作为一名初入java web后台开发的菜鸟,在使用时highcharts时不知道前后台数据是怎么交互的,经过一番折腾,终于搞出一套方案,将后台传递数据传到前台。(可能我还是菜鸟,错误之处,大家自行甄别,以下我提到的只是我理解的,切忌不可当真)
传递流程如下:首先,在前台jsp界面上会发送一个action1的form表单请求,会把一些数据传到后台进行处理(相对的action1),此时,action1返回的是success转到1.jsp界面。在1.jsp界面中,将action1函数中的一些数据hide在1.jsp中。当转入1.jsp时,会加载ajax,ajax又转到一个action url,这个url会带着hide在1.jsp中数据,转入另一个action:action2.action返回的是json数据,这时,再会把json做一定处理传到highcharts。
1.form表单
<s:form action="action1" namespace="/" >
//一些其他的要传入到后台的表单数据
</s:form>
2.action1
public class actionAction extends BaseAction {
public String action1() {
//将前台的表单数据进行一些处理
Map xAxisMap = new HashMap();
Map yAxisMap = new HashMap();
//传值到xAxisMap,yAxisMap,hide在1.jsp的界面中
return success;
}
} <action name="action1" class="actionAction" method="action1">
<result>/1.jsp</result>
</action>
3.前台1.jsp相关设置
<s:hidden id="xAxisMap" name="xAxisMap" value="%{xAxisMap}"/><!-- highcharts图表的x轴数据 -->
<s:hidden id="yAxisMap" name="yAxisMap" value="%{yAxisMap}"/><!-- highcharts图表的y轴数据 --> $(function(){
$.ajax({
type: 'POST',
dataType: 'JSON',
url: nameSpace+"/statisticLog.action?xAxisMap="+$("#xAxisMap").val()+"&yAxisMap="+$("#yAxisMap").val(),
success : function(result){
解析result数据,形成highcharts图表
}
});
});
);
4.action2处理xAxisMap,yAxisMap数据,转成json格式,也方便,在js文件中的ajax里面调用传入highcharts插件中。
public String action2() {
//处理xAxisMap,yAxisMap并赋到jsonMap中
jsonMap
return success;
} <action name="action2" class="actionAction" method="action2">
<result type="json"><param name="root">jsonMap</param></result>
<result name="input" type="json"><param name="root">jsonMap</param></result>
</action>
action2返回的是json数据,在ajax中的success function(result){}中的result就是那个json型数据jsonMap。
在加载1jsp,ajax会同步加载,调用aciton2,解析返回的jsonMap,highcharts也会显示出来。
附:highcharts的使用设置
highcharts初始化设置方法,一个为饼状图,一个为折线图。highcharts很重要的一部分就是数据格式的处理。
function showLine(lineChart) {
data0=lineChart[0];
data1=lineChart[1];
data2=lineChart[2];
data3=lineChart[3];
data4=lineChart[4];
data5=lineChart[5];
data6=lineChart[6];
data7=lineChart[7];
data8=lineChart[8]; var chart = new Highcharts.Chart({
chart: {
renderTo: 'chart',
defaultSeriesType: 'line',
marginRight: 130,
marginBottom: 25
},
title: {
text: 'smdb访问量统计',
x: -20 //center
},
subtitle: {
text: '各模块访问量折线图',
x: -20
},
xAxis: {
categories: data8
},
yAxis: {
title: {
text: '访问次数'
},
plotLines: [{
value: 0,
width: 1,
color: '#808080'
}]
},
tooltip: {
formatter: function() {
return '<b>'+ this.series.name +'</b><br/>'+
this.x +': '+ this.y +'';
}
},
legend: {
layout: 'vertical',
align: 'right',
verticalAlign: 'top',
x: -10,
y: 200,
borderWidth: 0
},
plotOptions: {
line: {
dataLabels: {
enabled: true
},
enableMouseTracking: false
}
},
series: [{
name: 'serverCount',
data: data0
}, {
name: 'systemCount',
data: data1
}, {
name: 'securityCount',
data: data2
}, {
name: 'personCount',
data: data3
}, {
name: 'unitCount',
data: data4
}, {
name: 'projectCount',
data: data5
}, {
name: 'productCount',
data: data6
}, {
name: 'awardCount',
data: data7
}]
});
} function showPie(arr) {
var data1=arr[0];
var data2=arr[1];
var data3=arr[2];
var data4=arr[3];
var data5=arr[4];
var data6=arr[5];
var data7=arr[6];
var chart = new Highcharts.Chart({
chart: {
renderTo: 'chart',
plotBackgroundColor: null,
plotBorderWidth: null,
plotShadow: false
},
title: {
text: 'smdb访问统计比例饼状图'
},
tooltip: {
formatter: function() {
return '<b>' + this.point.name + '</b>: ' + '总计'+this.y + '次';
}
},
plotOptions: {
pie: {
allowPointSelect: false,
cursor: 'pointer',
dataLabels: {
enabled: true,
color: '#000000',
connectorColor: '#000000',
formatter: function() {
return '<b>' + this.point.name + '</b>: ' + '总计'+this.y + '次';
}
}
}
},
series: [
{
type: 'pie',
name: 'Browser share',
data: [['systemCount',data1],
['securityCount',data2],
['personCount',data3],
['unitCount',data4],
['projectCount',data5],
['productCount',data6],
['awardCount',data7],
]
}
]
});
} $(function(){
$.ajax({
type: 'POST',
dataType: 'JSON',
url: nameSpace+"/statisticLog.action?xMap="+$("#xMap").val()+"&yMap="+$("#yMap").val()+"&logTimeType="+$("#logTimeType").val(),
success : function(result){
if(JSON.parse(result).logTimeType==1){
var jjson=JSON.parse(result);
var pieChart = new Array();
pieChart[0]=jjson.systemCount;
pieChart[1]=jjson.securityCount;
pieChart[2]=jjson.personCount;
pieChart[3]=jjson.unitCount;
pieChart[4]=jjson.projectCount;
pieChart[5]=jjson.productCount;
pieChart[6]=jjson.awardCount;
//systemCount等等各个count个表示一块扇形,这个数据不一定是显示百分比,也可以是值
showPie(pieChart);
}else{if(JSON.parse(result).logTimeType==2|JSON.parse(result).logTimeType==3|JSON.parse(result).logTimeType==4|JSON.parse(result).logTimeType==5){
var lineChart = new Array();
lineChart[0] = JSON.parse(result).serverCount;
lineChart[1] = JSON.parse(result).systemCount;
lineChart[2] = JSON.parse(result).securityCount;
lineChart[3] = JSON.parse(result).personCount;
lineChart[4] = JSON.parse(result).unitCount;
lineChart[5] = JSON.parse(result).projectCount;
lineChart[6] = JSON.parse(result).productCount;
lineChart[7] = JSON.parse(result).awardCount;
lineChart[8] = JSON.parse(result).listXData;
//serverCount等等count各用一条折线表示
//listXData为x轴上坐标一次显示的名称,比如一周,就一次显示星期一到星期五
showLine(lineChart); } } } }); });
图示如下:
饼状图:
折线图:
希望能通俗易懂。
基于ssh框架的highcharts前后台数据交互实例的更多相关文章
- 基于SSH框架的学生公寓管理系统的质量属性
系统名称:学生公寓管理系统 首先介绍一下学生公寓管理系统,在学生公寓管理方面,针对学生有关住宿信息问题进行管理,学生公寓管理系统主要包含了1)学生信息记录:包括学号.姓名.性别.院系.班级:2)住宿信 ...
- 基于SSH框架的网上书店系统开发的质量属性
基于SSH框架的网上书店系统开发的质量属性 对于我的基于SSH框架的网上书店系统的开发要实现的质量属性有可用性.可修改性.性能.安全性.易用性和可测试性. 1.对于可用性方面的战术: 可用性(Avai ...
- 基于ssh框架的在线考试系统开发的质量属性
我做的系统是基于ssh框架的在线考试系统.在线考试系统有以下几点特性:(1)系统响应时间需要非常快,可以迅速的出题,答题.(2)系统的负载量也需要非常大,可以支持多人在线考试(3)还有系统的安全性也需 ...
- Django学习笔记(8)——前后台数据交互实战(AJAX)
这里将自己这段时间学习的关于前后台数据交互的笔记写在这里,这里包含了Django传输数据给JS,AJAX的相关问题,跨域问题,如何解决AJAX的跨域问题等等.比较凌乱,请看到这篇博客的盆友见谅,如果我 ...
- 基于SSH框架的在线考勤系统开发的质量属性
我要开发的是一个基于SSH框架的在线考勤系统. 质量属性是指影响质量的相关因素,下面我将分别从6个系统质量属性(可用性,易用性,可修改性,性能,安全性,可测试性)来分析我的系统,以及如何实现这些质量属 ...
- 基于SSH框架开发的《高校大学生选课系统》的质量属性的实现
基于SSH框架开发的<高校大学生选课系统>的质量属性的实现 对于可用性采取的是错误预防战术,即阻止错误演变为故障:在本系统主要体现在以下两个方面:(1)对于学生登录模块,由于初次登陆,学生 ...
- 如何实现基于ssh框架的投票系统的的质量属性
如何实现基于ssh框架的投票系统的的质量属性: 项目 :网上考试系统 我做的是网上考试系统,因为标准化的考试越来越重要,而通过计算机进行标准化判卷,系统会自动判卷出成绩,组织考试的人不用组织人员打印试 ...
- 基于SSH框架的学生选课质量属性分析
系统:学生选课系统 框架:SSH(Struts2+Spring+Hibernate) 我做的是基于SSH框架的学生选课系统.学生选课系统的特性:①系统响应时间短,能够快速调出课程数据供学生选课提交.② ...
- 文献综述十八:基于SSH框架的进销存管理系统设计与实现
一.基本信息 标题:基于SSH框架的进销存管理系统设计与实现 时间:2017 出版源:内蒙古科技与经济 文件分类:对框架的研究 二.研究背景 进销存管理系统在各企业中广泛应用,使用SSH框架,很大程度 ...
随机推荐
- Python Xcode搭建Python环境以及使用PyCharm CE
pycharm CE下载 使用教程 1.基础学习网站 2.在Xcode7中搭建python开发环境,这个不行了就试试第二个,我是第二个可以正常输出了,第一个没有输出 3.Python学习-MAC下 ...
- iOS 应用中加载文档pdf/word/txt
一.加载PDF文档:应用内打开文档.手机中其他应用打开文档 Demo 首先拖入一个文档pdf.word.txt,打开不同的文档知识 文件名字.类型修改即可 #import "ReadView ...
- Akka Cluster简介与基本环境搭建
akka集群是高容错.去中心化.不存在单点故障以及不存在单点瓶颈的集群.它使用gossip协议通信以及具备故障自动检测功能. Gossip收敛 集群中每一个节点被其他节点监督(默认的最大数量为 ...
- 浅析 SpringMVC 原理和配置.
一.原理 Spring MVC基于模型-视图-控制器(Model-View-Controller,MVC)模式实现,它能够帮你构建像Spring框架那样灵活和松耦合的Web应用程序,将请求处理的逻辑和 ...
- coursera 视频总是缓冲或者无法观看的解决办法
注意!!!该方法针对Windows用户,亲测有效. 1.用管理员权限记事本打开host文件 2.将如下内容复制到文件末尾 52.84.246.90 d3c33hcgiwev3.cloudfront.n ...
- @Data 注解引出的 lombok 小辣椒
今天在看代码的时候, 看到了这个注解, 之前都没有见过, 所以就查了下, 发现还是个不错的注解, 可以让代码更加简洁. 这个注解来自于 lombok,lombok 能够减少大量的模板代码,减少了在使用 ...
- Yum database disk image is malformed
使用 yum update 时使用Ctrl+C 后,再用yum 安装其他软件的时候收到:Yum database disk image is malformedyum clean dbcache 清除 ...
- 第二节 安装CentOS
Linux 第二节一.安装VNware workstation 10二.安装CentOS 1.root/123456 用户登录[root@localhost ~]# 2.关机 init 0 3.ifc ...
- localStorage用法总结
这些知识是参考下面的朋友的.谢谢分享. http://www.jianshu.com/p/39ba41ead42e http://www.cnblogs.com/st-leslie/p/5617130 ...
- spring的基本使用
Spring的基本使用ioc,今天主要给大家说明了解决强耦合的联系,并且,注入的基本使用 Java里面的强耦合并且讲了spring是如何解决强耦合的第一种方式使用工厂模式,用的是反射,第二种方式是sp ...