基于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框架,很大程度 ...
随机推荐
- 《CLR via C#(第4版)》【PDF】下载
<CLR via C#(第4版)>[PDF]下载链接: https://u253469.pipipan.com/fs/253469-230382189 via C#(第4版)>[PD ...
- Python学习日记:day4
列表 li=['alex',[1,2,3] ,'wusir','egon','女神','taibai']#列表 l1 = li[0] print(l1)#alex l2 = li[1] print ( ...
- 如果没有UX经验,如何创建个人UX作品集?
以下内容由Mockplus团队翻译整理,仅供学习交流,Mockplus是更快更简单的原型设计工具. 一直以来,这是设计行业的悖论. 当今,许多活跃于我们用户体验行业的专业人士在开始个人职业生涯时都面临 ...
- bzoj 4196: [Noi2015]软件包管理器
Description Linux用户和OSX用户一定对软件包管理器不会陌生.通过软件包管理器,你可以通过一行命令安装某一个软件包,然后软件包管理器会帮助你从软件源下载软件包,同时自动解决所有的依赖( ...
- python匿名函数
文章导读: 以前自己一直没搞明白Python中的匿名函数,现在拿这个问题基本上搞明白了,拿自己的理解整成一篇文章,附带大量例子,让其更加好理解. 在编程语言中,函数的应用: 1. 代码块重复,这时候必 ...
- C#用DataTable实现Group by数据统计
http://www.cnblogs.com/sydeveloper/archive/2013/03/29/2988669.html 1.用两层循环计算,前提条件是数据已经按分组的列排好序的. Dat ...
- linux系统中,文件的三种特殊权限
背景介绍 在linux系统中,我们熟知有rwx三种权限,对应所有者,同组用户,其他用户三种用户的权限,一共9个位来指定一个文件的权限情况,通过chmod xxx 来更改权限属性,其中xxx是已八进制表 ...
- Ajax同源和跨域
ajax跨域访问 客户端页面 var url = "http://172.16.91.121:81/FellIn/FellIn.aspx?Action=WXSave&WX_Store ...
- dubbo源码—dubbo简介
dubbo是一个RPC框架,应用方像使用本地service一样使用dubbo service.dubbo体系架构 上图中的角色: 最重要的是consumer.registry和provider con ...
- Vue-cli 创建的项目如何跨域请求
感谢BeArchitect的技术支持 问题描述: 使用 Vue-cli 创建的项目,开发地址是 localhost:8023,需要访问 localhost:9000 上的接口 分析原因: 不同域名之间 ...