zoukankan      html  css  js  c++  java
  • highcharts加载数据库数据(java版)

    前段时间因为项目需要使用了highcharts报表,新手可以参考http://www.hcharts.cn/,教程中有比较详细的介绍和demo。但是demo中的例子的数据都是静态数据,而在实际项目中一般数据都是从数据库加载的。
    下面是我做的一个简单例子,从数据库中加载数据然后在前端使用highcharts渲染。

    读取数据库数据使用的servlet,可以根据需要改成其他(如spring等)。servlet主要代码如下:

        public void doGet(HttpServletRequest request, HttpServletResponse response)
                throws ServletException, IOException {
    
            Connection conn = null;
            String sql;
            String url = "jdbc:mysql://192.168.1.203:3306/test?user=opuser&password=opuser1111&useUnicode=true&characterEncoding=UTF8";
    
            try {
                Class.forName("com.mysql.jdbc.Driver");
    
                conn = DriverManager.getConnection(url);
                Statement stmt = conn.createStatement();
                sql = "select * from test";
                ResultSet rs = stmt.executeQuery(sql);
                List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
                while (rs.next()) {
                    System.out.println(rs.getString(1) + " " + rs.getString(2) + " " + rs.getString(3));
                    Map<String, Object> map = new HashMap<String, Object>();
                    map.put("datetime", rs.getString(2));
                    map.put("data", Double.parseDouble(rs.getString(3)));
                    list.add(map);
                }
    
                Gson gson = new Gson();
                String g = gson.toJson(list);
    
                PrintWriter out = response.getWriter();  
                out.println(g);
                out.flush();
                out.close();
            } catch (ClassNotFoundException e) {
                e.printStackTrace();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }

    本例中返回的数据格式是json。
    程序中使用了mysql和gson的jar包,请自行下载。因为都是比较常用的jar包,在此就不提供下载地址了。

    然后是jsp代码如下:

    <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
    <%
    String path = request.getContextPath();
    String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
    %>
    
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
    <head>
        <title>HighChartsTest</title>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
        <!-- <script type="text/javascript" src="js/jquery-1.8.3.min.js"></script>
        <script type="text/javascript" src="js/highcharts.js"></script> --> 
        <script type="text/javascript" src="http://cdn.hcharts.cn/jquery/jquery-1.8.3.min.js"></script>
        <script type="text/javascript" src="http://cdn.hcharts.cn/highcharts/highcharts.js"></script>
        <script>
    
            //图表属性,不包含数据
            var options = {
                chart: {
                    renderTo:'container',
                    type:'spline',
                },
                title: {
                    text: '实时温度曲线',
                    x: -20 //center
                },
    
                xAxis:{
                },
                yAxis: {
                    title: {
                        text: 'Temperature (°C)'
                    },
                    plotLines: [{
                        value: 0,
                         1,
                        color: '#808080'
                    }]
                },
                series: [{
                    name:'温度',
                }],
                tooltip: {
                    valueSuffix: '°C'
                },
    
                plotOptions: {
                    spline:{
                        dataLabels: {
                            enabled: true
                        },
                        animation:false,
                    },
                },
            };
    
            //初始函数,设置定时器,定时取数据
            $(function () {
                queryData(0);
    
                var i=0;
                var timer = setInterval(function(){
                    i++;
                    if(i>=3) {i=0;}
                    queryData(i);
                },3000);
    
                //停止刷新
                $("button").click(function(){
                    clearInterval(timer);
                });
            });
    
            var categories = [];
            var datas = [];
    
            //Ajax 获取数据并解析创建Highcharts图表
            function queryData(index) {
                $.ajax({
                    url:'servlet/HighCharts',
                    type:'get',
                    dataType:"json",
                    success:function(data) {
    
                        $.each(data,function(i,n){
                            categories[i] = n["datetime"];
                            datas[i] = n["data"];
                        });
    
                        options.xAxis.categories = categories;
                        options.series[0].data = datas;
    
                        chart = new Highcharts.Chart(options);
                    }
                });
            }
    
    
        </script>
    </head>
    
    <body>
        <div id="container" style="min-800px;height:400px;"></div>
        <p align=center><button>停止刷新</button></p>
    
    </body>
    
    </html>

    代码下载:http://pan.baidu.com/s/1slvI6UL

    如果觉得本文对您有帮助,请“打赏”,谢谢。
    您的鼓励,我的动力。
    微信 支付宝
  • 相关阅读:
    spring MVC配置详解
    sun.misc.BASE64Encoder找不到jar包的解决方法
    maven入门教程
    Mybatis与Hibernate的详细对比
    分享知识-快乐自己:Hibernate对象的三种状态
    分享知识-快乐自己:Hibernate框架常用API详解
    分享知识-快乐自己:Hibernate 中 get() 和 load()、sava、update、savaOrUpdate、merge,不同之处及执行原理?
    分享知识-快乐自己:Mybatis缓存机制
    分享知识-快乐自己:Hibernate中的 quert.list() 与 quert.iterate() 方法区别
    分享知识-快乐自己:SpringMvc整合遇到-前台传JSON参数,后台实体类对象接收
  • 原文地址:https://www.cnblogs.com/zongzhankui/p/5875308.html
Copyright © 2011-2022 走看看