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. .Net Ajax跨域请求实现

    下一阵子要做一个网站Web储备一下知识,AJAX 实现跨域请求,估计会用到,以前在学  WebServer  时候老师整理的一个文档,现在便于查阅和使用现在放到我的博客中. 一般平时我写web页面的时 ...

  2. hibernate框架(4)---主键生成策略

    主键生成策略 常见的生成策略分为六种 1.increment 由Hibernate从数据库中取出主键的最大值(每个session只取1次),以该值为基础,每次增量为1,在内存中生成主键,不依赖于底层的 ...

  3. geoserver发布地图服务WMTS

    WMTS: 切片地图web服务(OpenGIS Web Map Tile Service) WMTS提供了一种采用预定义图块方法发布数字地图服务的标准化解决方案.WMTS弥补了WMS不能提供分块地图的 ...

  4. windows下 安装 rabbitMQ 及操作常用命令(操作创建用户密码 角色等)

    rabbitMQ是一个在AMQP协议标准基础上完整的,可服用的企业消息系统.它遵循Mozilla Public License开源协议,采用 Erlang 实现的工业级的消息队列(MQ)服务器,Rab ...

  5. NOI2009 植物大战僵尸

    啊一道好题感觉写得挺爽的啊这题这种有一点懵逼然后学了一点东西之后很明朗的感觉真是好!预处理参考 :http://www.cppblog.com/MatoNo1/archive/2014/11/01/1 ...

  6. 使用 Kafka 和 ELK 搭建测试日志系统(1)

    本文仅供自己学习,不合适转载. 这是两篇文章的第一部分. 1. 安装 ELK 1.1 安装 ElasticSearch 在海航云上创建一个 Ubutu 16.4 虚机,2核4GB内存. (1)执行以下 ...

  7. lesson - 12 Linux系统日常管理1

    监控系统状态 – w, vmstat命令w, uptimesystem load averages 单位时间段内活动的进程数 查看cpu的个数和核数vmstat 1vmstat 1 10vmstat各 ...

  8. userdel 命令详解

    userdel  作用: 删除指定用户,以及用户相关的文件. 如不加选项,则仅删除用户账号,而不删除相关文件 选项: -f:强制删除用户,即时用户当前已登录 -r:删除用户的同时删除与用户相关的所有文 ...

  9. raspberrypi 3代B 配置摄像头

    raspberrypi 3代B 配置摄像头 硬件环境: 树莓派3B (element 14版) 树莓派3夜视摄像头800万像素(element 14版) 金士顿 64GB TF Class 10 UH ...

  10. 解决 mysql 中文乱码

    mysql版本:5.6.38 虽然创建实例时选择的是utf-8的utf8_general_ci,但是用其他程序保存中文时依旧出现乱码的情况. 记录一种可行的解决方案,即修改数据库的字符集. 由于该环境 ...