这篇文章主要结合Struts2+json+Highcharts实现动态数据的显示。为了节省时间,就不写数据库了。在action中用一个集合来模拟从数据库取到的数据。模拟数据为三个学生在不同时间成绩的变化情况:

 
张三
李四
王五
第一周
90
86
95
第二周
95
98
91
第三周
80
64
76
第四周
85
75
90

注意本例中用到的数据为JSON数据。因此在action中声明返回json数据的变量并提供get/set方法。如:

1
2
// 返回学生信息的JSON数据
private String result;

模拟的数据和将数据集合转换成json格式的代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
public String demo() {
        // 假如查询出来了三个学生信息
        dataList = new ArrayList();
        StudentScore stu1 = new StudentScore();
        StudentScore stu2 = new StudentScore();
        StudentScore stu3 = new StudentScore();
 
        stu1.setName("张三");
        List allgrade1 = new ArrayList();
        allgrade1.add(90);
        allgrade1.add(95);
        allgrade1.add(80);
        allgrade1.add(85);
        stu1.setData(allgrade1);
        dataList.add(stu1);
 
        stu2.setName("李四");
        List allgrade2 = new ArrayList();
        allgrade2.add(86);
        allgrade2.add(98);
        allgrade2.add(64);
        allgrade2.add(75);
        stu2.setData(allgrade2);
        dataList.add(stu2);
 
        stu3.setName("王五");
        List allgrade3 = new ArrayList();
        allgrade3.add(95);
        allgrade3.add(91);
        allgrade3.add(76);
        allgrade3.add(90);
        stu3.setData(allgrade3);
        dataList.add(stu3);
 
        try {
            result = JSONSerializer.toJSON(dataList).toString();
            System.out.println("json:" + result);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return "query_success";
    }
        返回的数据一定要是json格式的。如:

1
json:[{"data":[90,95,80,85],"name":"张三"},{"data":[86,98,64,75],"name":"李四"},{"data":[95,91,76,90],"name":"王五"}]
        struts.xml文件配置如下:

1
2
result
truefalsetext/html
        注意:result的type为json类型。
        js代码和以前的差不多,只是增加了一个ajax方法。如:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
$(function() {
    $.ajax({
        type : "POST",
        dataType : "JSON",
        url : "HighChartActionUrl_demo.action",
        success : function(result) {
            // 解析action中发过来的数据
            var userdata = eval('(' + result + ')');
            new Highcharts.Chart({
                chart : {
                    renderTo : 'gridTable1', // 放置图表的DIV容器对应的id属性
                    type : 'column' // 图表类型line, spline, area, areaspline,
                // column, bar, pie , scatter
                },
                title : {
                    text : '学生成绩' // 图表标题
                },
                subtitle : {
                    text : '10级3年2班' // 副标题
                },
                xAxis : {
                    categories : [ '第一周', '第二周', '第三周', '第四周', ]
                // x轴
                },
                credits : {
                    text : 'demo', // 设置LOGO区文字
                    href : 'http://www.javakfz.com' // 设置LOGO链接地址
                },
                exporting : {
                    enabled : true
                },
                yAxis : {
                    min : 0,
                    title : {
                        text : '成绩 (分)'
                    }
                },
                legend : {
                    layout : 'vertical',
                    backgroundColor : '#FFFFFF',
                    align : 'left',
                    verticalAlign : 'top',
                    x : 100,
                    y : 70,
                    floating : true,
                    shadow : true
                },
                tooltip : {
                                                 //当鼠标悬置数据点时的格式化提示
                    formatter : function() {
                        return '' + this.x + ': ' + this.y + '分';
                    }
                },
                plotOptions : {
                    column : {
                        dataLabels : {
                            enabled : true
                        },
                        pointPadding : 0.2,
                        borderWidth : 0
                    }
                },
                series : userdata
            });
        }
    });
});
 
        通过上面的代码,可以看出只有series发生了变化,前面的例子数据都是不变的,而这个例子的数据完全是动态显示的。Highcharts的使用还是比较简单的,例子只是用来入门的,还有很多高级特征就需要自己开发了。另外附上最终的效果图:

原创文章,转载请注明: 转载自java开发者

本文链接地址: highCharts+Struts2生成柱状图

highCharts+Struts2生成柱状图的更多相关文章

  1. HighCharts之2D柱状图

    1.HighCharts之2D柱状图源码 column.html: <!DOCTYPE html> <html> <head> <meta charset=& ...

  2. 如何用asp.net MVC框架、highChart库从sql server数据库获取数据动态生成柱状图

    如何用asp.net MVC框架.highChart库从sql server数据库获取数据动态生成柱状图?效果大概是这样的,如图: 请问大侠这个这么实现呢?

  3. html5生成柱状图(条形图)

    <html> <canvas id="a_canvas" width="1000" height="700">< ...

  4. HighCharts之2D柱状图、折线图的组合多轴图

    HighCharts之2D柱状图.折线图的组合多轴图 1.实例源码 SomeAxis.html: <!DOCTYPE html> <html> <head> < ...

  5. HighCharts之2D柱状图、折线图的组合双轴图

    HighCharts之2D柱状图.折线图的组合双轴图 1.实例源码 DoubleAxis.html: <!DOCTYPE html> <html> <head> & ...

  6. HighCharts之2D柱状图、折线图和饼图的组合图

    HighCharts之2D柱状图.折线图和饼图的组合图 1.实例源码 ColumnLinePie.html: <!DOCTYPE html> <html> <head&g ...

  7. 使用jfreechart生成柱状图、折线图、和饼状图

    JFreeChart是JAVA平台上的一个开放的图表绘制类库.它完全使用JAVA语言编写,是为applications, applets, servlets 以及JSP等使用所设计.下面我就详细介绍如 ...

  8. struts2生成随机验证码图片

    之前想做一个随机验证码的功能,自己也搜索了一下别人写的代码,然后自己重新用struts2实现了一下,现在将我自己实现代码贴出来!大家有什么意见都可以指出来! 首先是生成随机验证码图片的action: ...

  9. nodejs搭配phantomjs highcharts后台生成图表

    简单分享一下,后台使用nodejs结合highcharts.phantomjs生成报表图片的方法.这主要应用在日报邮件. 主要参考以下资料: http://www.highcharts.com/com ...

随机推荐

  1. Quartz JobStore管理Job

    Quartz提供了RAMJobStore和JDBC JobStore两种方式用来Job,RAMJobStore将Job任务存入内存中,速度快:JobStore采用数据库的方式管理中,本文介绍JobSt ...

  2. 什么是Cookie。Cookie的原理介绍,Cookie的简单应用

    1 介绍:Cookies亦称Cookie .Cookies是一种能够让网站服务器把少量数据储存到客户端的硬盘或内存,或是从客户端的硬盘读取数据的一种技术.Cookies是当你浏览某网站时,由Web服务 ...

  3. java开发中的一些概念名词

    1. JavaBeans JavaBean是符合某种规范的Java组件,也就是Java类.它必须满足如下规范: 1)必须有一个零参数的默认构造函数 2)必须有get和set方法,类的字段必须通过get ...

  4. Openerp约束句型

    内容摘自:http://blog.csdn.net/sz_bdqn/article/details/8785483 _constraints _constraints可以灵活定义OpenERP对象的约 ...

  5. Android Exception 7(attempt to re-open an already-closed object )

    07-23 18:16:17.641: W/SQLiteConnectionPool(28390): A SQLiteConnection object for database '/storage/ ...

  6. !HDU 1078 FatMouse and Cheese-dp-(记忆化搜索)

    题意:有一个n*n的格子.每一个格子里有不同数量的食物,老鼠从(0,0)開始走.每次下一步仅仅能走到比当前格子食物多的格子.有水平和垂直四个方向,每一步最多走k格,求老鼠能吃到的最多的食物. 分析: ...

  7. hdu1350Taxi Cab Scheme (最小路径覆盖)

    Taxi Cab Scheme Time Limit: 20000/10000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) T ...

  8. Idea golang "can’t find import" 解决方法

    如题,在使用leveldb go wrapper levigo 的时候,本地安装好levigo后,通过命令行编译代码正常并能work,但在Idea中使用时出现: can't find import & ...

  9. maven 动态版本 aliyun阿里云Maven仓库地址——加速你的maven构建

    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/20 ...

  10. SQL中的join操作总结(非常好)

    1.1.1 摘要 Join是关系型数据库系统的重要操作之一,SQL Server中包含的常用Join:内联接.外联接和交叉联接等.如果我们想在两个或以上的表获取其中从一个表中的行与另一个表中的行匹配的 ...