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前后台数据交互实例的更多相关文章

  1. 基于SSH框架的学生公寓管理系统的质量属性

    系统名称:学生公寓管理系统 首先介绍一下学生公寓管理系统,在学生公寓管理方面,针对学生有关住宿信息问题进行管理,学生公寓管理系统主要包含了1)学生信息记录:包括学号.姓名.性别.院系.班级:2)住宿信 ...

  2. 基于SSH框架的网上书店系统开发的质量属性

    基于SSH框架的网上书店系统开发的质量属性 对于我的基于SSH框架的网上书店系统的开发要实现的质量属性有可用性.可修改性.性能.安全性.易用性和可测试性. 1.对于可用性方面的战术: 可用性(Avai ...

  3. 基于ssh框架的在线考试系统开发的质量属性

    我做的系统是基于ssh框架的在线考试系统.在线考试系统有以下几点特性:(1)系统响应时间需要非常快,可以迅速的出题,答题.(2)系统的负载量也需要非常大,可以支持多人在线考试(3)还有系统的安全性也需 ...

  4. Django学习笔记(8)——前后台数据交互实战(AJAX)

    这里将自己这段时间学习的关于前后台数据交互的笔记写在这里,这里包含了Django传输数据给JS,AJAX的相关问题,跨域问题,如何解决AJAX的跨域问题等等.比较凌乱,请看到这篇博客的盆友见谅,如果我 ...

  5. 基于SSH框架的在线考勤系统开发的质量属性

    我要开发的是一个基于SSH框架的在线考勤系统. 质量属性是指影响质量的相关因素,下面我将分别从6个系统质量属性(可用性,易用性,可修改性,性能,安全性,可测试性)来分析我的系统,以及如何实现这些质量属 ...

  6. 基于SSH框架开发的《高校大学生选课系统》的质量属性的实现

    基于SSH框架开发的<高校大学生选课系统>的质量属性的实现 对于可用性采取的是错误预防战术,即阻止错误演变为故障:在本系统主要体现在以下两个方面:(1)对于学生登录模块,由于初次登陆,学生 ...

  7. 如何实现基于ssh框架的投票系统的的质量属性

    如何实现基于ssh框架的投票系统的的质量属性: 项目 :网上考试系统 我做的是网上考试系统,因为标准化的考试越来越重要,而通过计算机进行标准化判卷,系统会自动判卷出成绩,组织考试的人不用组织人员打印试 ...

  8. 基于SSH框架的学生选课质量属性分析

    系统:学生选课系统 框架:SSH(Struts2+Spring+Hibernate) 我做的是基于SSH框架的学生选课系统.学生选课系统的特性:①系统响应时间短,能够快速调出课程数据供学生选课提交.② ...

  9. 文献综述十八:基于SSH框架的进销存管理系统设计与实现

    一.基本信息 标题:基于SSH框架的进销存管理系统设计与实现 时间:2017 出版源:内蒙古科技与经济 文件分类:对框架的研究 二.研究背景 进销存管理系统在各企业中广泛应用,使用SSH框架,很大程度 ...

随机推荐

  1. 让intellij idea 14 支持ES6语法

    用eclipse做前端开发,用到了webpack,结果各种依赖导致软件卡的一比,简直不能动!虽然在同事的帮忙下,修改了一下配置,但仍然卡的没脾气.改用intellij idea 14解决了卡的问题,但 ...

  2. MySQL创建一个固定频率执行且自定义"开始"时间的定时任务event

    drop event if exists evt_test;create event evt_teston schedule every 10 SECOND  -- 每10秒执行一次(second可以 ...

  3. Paho - MQTT C Cient的实现

    来自我的CSDN博客   在前几天,我大致了解了一下Paho C项目,并对其的一些内容进行了翻译.俗话说,光说不练假把戏,今天就给大家讲一下使用Paho的客户端库文件实现MQTT C Client的过 ...

  4. 关于mysql的loose index scan的几点疑问

    本文同时发表在https://github.com/zhangyachen/zhangyachen.github.io/issues/102 关于MySQL的loose index scan有几点疑问 ...

  5. 重写JS的鼠标右键点击菜单

    重写JS的鼠标右键点击菜单 该效果主要有三点,一是对重写的下拉菜单的隐藏和显示:二是屏蔽默认的鼠标右键事件:三是鼠标左键点击页面下拉菜单隐藏. 不多说,上html代码: 1 <ul id=&qu ...

  6. IT服务(运维)管理实施的几个要点--序言

    IT服务(运维)管理(不是IT运维技术)是IT行业当中相对比较"窄"的一个分支,通常只被金融.电信等大型数据中心的中高层管理人员所关注.但是根据笔者多年从事IT服务和服务管理的经验 ...

  7. Lambda表达式补充

    l“Lambda 表达式”是一个匿名函数,它可以包含表达式和语句,并且可用于创建委托或表达式树类型. lLambda 表达式的运算符 =>,该运算符读为“goes to”. l=> 运算符 ...

  8. vivado hls(1)

    笔记 1.vivado  hls是fpga高级综合工具,可以将C语言转换成verilog代码,适合编写算法,但是要有硬件思想. 2.软核就是只要资源足够,就可以用逻辑打一个CPU出来,与硬核不一样,硬 ...

  9. 通过js中的useragrent来判断设备是pc端还是移动端,跳转不同的地址

    if(/AppleWebKit.*Mobile/i.test(navigator.userAgent) || (/MIDP|SymbianOS|NOKIA|SAMSUNG|LG|NEC|TCL|Alc ...

  10. Kettle中忽略错误行继续执行

    在kettle执行的过程中,如果遇到错误,kettle会停止运行.在某些时候,并不希望kettle停止运行,所以就要处理下这些错误行. 例如这两天发现在一个转换中,总数出现一些不规则数据,这些数据一出 ...