基于 SpringBoot + Echarts 实现的动态实时大屏

欢迎关注方志朋的博客,回复”666“获面试宝典

来源:https://yydatav.blog.csdn.net/?type=blog

效果图展示

fb0b2bc5a835a00d9d0961d0801233fd.gif

3f019e98e40da848c6fff2f454defc64.png 

1021f7cc34c93802bac7d702ee8a10d7.png 

796b1d4c74cffcf6d8002331dc6d1fe9.png 

2aec4654d6ddbcbad05cdf7f9ed8997a.png 

874a477d97d2969dd232691fb6f89a4e.png

一、 确定需求方案

1、确定产品上线部署的屏幕LED分辨率

本案例基于16:9 屏宽比,F11全屏显示。

2、部署方式 

基于免安装可执行程序:支持Windows、Linux、Mac等各种操作系统;将程序复制到服务器上即可,无需其它环境依赖;

观看方式:既可在服务器上直接观看程序界面,也可在远程用浏览器打开播放,例如Chrome浏览器、360浏览器等。

二、整体架构设计

  1. 前端基于Echarts开源库设计,使用WebStorm编辑器;

  2. 后端基于Java Web实现,使用 IDEA 编辑器;

  3. 数据传输格式:JSON;

  4. 数据源类型:目前采用JSON文件方式,自行添加Mybatis可支持PostgreSQL、MySQL、Oracle、Microsoft SQL Server、SQLite,自行添加POI可支持Excel表格等,还可以定制HTTP API接口方式。

    1. 数据更新方式:采用http get 轮询方式 。在实际应用中,也可以视情况选择j监测后端数据实时更新,实时推送到前端的方式;

三、编码实现 (关键代码)

1、前端html代码 - 页面布局layout&样式style

<div class="container_fluid">
        <!-- 标题栏 -->
        <div class="row_fluid">
            <div id="container_1" class="col-xs-12 col-md-12">
 
            </div>
        </div>
 
        <!-- 上栏 -->
        <div class="row_fluid">
 
            <!-- 上左栏 -->
            <div id="container_2" class="col-xs-12 col-md-4">
                <div id="container_2_1" class="col-xs-12 col-md-6">
                </div>
                <div id="container_2_2" class="col-xs-12 col-md-6">
                </div>
                <div id="container_2_3" class="col-xs-12 col-md-12">
                </div>
            </div>
 
            <!-- 上中栏 -->
            <div id="container_3" class="col-xs-12 col-md-4">
                <iframe src="myimg/video.mp4" scrolling="no" border=0 frameborder="no" framespacing=0
                    allowfullscreen="true" width="100%" height="100%"> </iframe>
            </div>
 
            <!-- 上右栏 -->
            <div id="container_4" class="col-xs-12 col-md-4">
                <div id="container_4_1" class="col-xs-12 col-md-3">
                </div>
 
                <div id="container_4_2" class="col-xs-12 col-md-3">
                </div>
 
                <div id="container_4_3" class="col-xs-12 col-md-3">
                </div>
 
                <div id="container_4_4" class="col-xs-12 col-md-3">
                </div>
 
                <div id="container_4_5" class="col-xs-12 col-md-6">
                </div>
 
                <div id="container_4_6" class="col-xs-12 col-md-6">
                </div>
            </div>
        </div>
    </div>
 
    <!-- 下栏 -->
    <div class="row_fluid">
        <!-- 下左栏 -->
        <div id="container_5" class="col-xs-12 col-md-4">
 
            <div id="container_5_1" class="col-xs-12 col-md-12">
            </div>
            <div id="container_5_2" class="col-xs-12 col-md-12">
            </div>
        </div>
 
        <!-- 下中栏 -->
        <div id="container_6" class="col-xs-12 col-md-4">
        </div>
 
        <!-- 下右栏 -->
        <div class="col-xs-12 col-md-4">
            <div id="container_7" class="row_fluid">
                <div id="container_7_1" class="col-xs-12 col-md-6">
                </div>
                <div id="container_7_2" class="col-xs-12 col-md-6">
                </div>
                <div id="container_7_3" class="col-xs-12 col-md-12">
                </div>
            </div>
        </div>
 
    </div>

2、前端JS代码 - 各个echarts图表

var idContainer_4_5 = "container_4_5";
function initEchart_4_5() {
  // 基于准备好的dom,初始化echarts实例
  var myChart = echarts.init(document.getElementById(idContainer_4_5), gTheme);
  option = {
    title: {
      text: "年龄分布",
      top: "10%",
      left: "center",
      textStyle: {
        color: "#17c0ff",
        fontSize: "12",
      },
    },
 
    tooltip: {
      trigger: "item",
      formatter: "{a} <br/>{b}: {c} ({d}%)",
      position: function (p) {
        //其中p为当前鼠标的位置
        return [p[0] + 10, p[1] - 10];
      },
    },
 
    grid: {
      left: "0",
      right: "10",
      bottom: "25%",
      top: "20%",
      containLabel: true,
    },
 
    xAxis: {
      type: "category",
      data: [],
      axisLabel: {
        textStyle: {
          color: "rgba(255,255,255,.8)",
          fontSize: 10,
        },
      },
      axisLine: {
        lineStyle: {
          color: "rgba(255,255,255,.2)",
        },
      },
      splitLine: {
        lineStyle: {
          color: "rgba(255,255,255,.1)",
        },
      },
    },
    yAxis: {
      type: "value",
      data: [],
      axisLabel: {
        textStyle: {
          color: "rgba(255,255,255,.8)",
          fontSize: 10,
        },
      },
      axisLine: {
        lineStyle: {
          color: "rgba(255,255,255,.2)",
        },
      },
      splitLine: {
        lineStyle: {
          color: "rgba(255,255,255,.1)",
        },
      },
    },
    series: [
      {
        name: "年龄分布",
        type: "bar",
        stack: "total",
        label: {
          show: true,
        },
      },
    ],
  };
 
  // 使用刚指定的配置项和数据显示图表。
  myChart.setOption(option);
  window.addEventListener("resize", function () {
    myChart.resize();
  });
}
 
function getKeys(dataList) {
  var keys = [];
  var len = dataList.length;
  for (var i = 0; i < len; i++) keys.push(dataList[i].name);
  return keys;
}
 
function asyncData_4_5() {
  $.getJSON("myjson/bar_age.json").done(function (data) {
    var myChart = echarts.init(document.getElementById(idContainer_4_5));
    myChart.setOption({
      xAxis: { data: getKeys(data) },
      series: [{ data: data }],
    });
  }); //end $.getJSON
}
 
initEchart_4_5();

3、后端Java代码

@RestController
@RequestMapping("/json")
public class Process {
 
    @RequestMapping("/{filename}")
    public String json(@PathVariable("filename") String filename) throws Exception {
        System.out.println(filename);
        ChangeJSON(filename);
 
        String jsonStr = readJSON(filename);
        System.out.println(jsonStr);
        return jsonStr;
    }

4、数据通信 JSON

[{"name": "<18", "value": 2962}, {"name": "18-23", "value": 3119}, {"name": "24-30", "value": 2562}, {"name": "31-40", "value": 1024}, {"name": "41-50", "value": 2791}, {"name": ">50", "value": 4073}]

四、开发配置&代码结构说明

1、Java开发环境配置

132eba24167d869627cf540aa7c6abdf.png

 27511259bd996e35b5179d69a33aeed0.png

94194e2095219b2204e6a6b771e9aa54.png

 然后GENERATE,下载包即可。

2、json库配置

使用alibaba的json库,pom.xml文件增加配置:

<dependency>
   <groupId>com.alibaba</groupId>
   <artifactId>fastjson</artifactId>
   <version>1.2.51</version>
</dependency>

3、代码结构说明 

a、静态路径

f47ef9d56933dddc1c8b1c30e271b265.png

b、Java 目录

3c54b56d81a9b638f067c02434ef4942.png

c、端口配置

6e98993eaef32effc20934fae818bc47.png

4、启动命令 

4045f2b7845dfc5ee4da0d11f9270e6b.png

5、浏览器查看

浏览器中输入网址查看大屏(端口为 application.properties 中的 server.port 值)
http://localhost:80xx 

热门内容:
 
 

73d85bc9e996dec6f7aa02c327eeef26.png

 
 
最近面试BAT,整理一份面试资料《Java面试BAT通关手册》,覆盖了Java核心技术、JVM、Java并发、SSM、微服务、数据库、数据结构等等。
获取方式:点“在看”,关注公众号并回复 666 领取,更多内容陆续奉上。

明天见(。・ω・。)ノ

基于echartsJava Spring Boot,我们可以轻松地实现一个动态实时大屏。首先,我们可以使用Java Spring Boot作为后端框架,通过WebSocket实时传输数据给前端。在后端,我们可以创建一个WebSocket服务端,接收数据并将数据实时推送给前端。同时,我们可以使用echarts作为前端图表库,实时更新数据并展示在大屏上。 在Java Spring Boot中,我们可以创建一个WebSocket配置类,配置WebSocket处理器和拦截器,以便接收和处理实时数据。然后,我们可以创建一个Controller类来处理前端的请求,并将数据发送到前端,同时也可以实现数据的实时更新和推送。通过Spring Boot的自动装配和依赖管理,我们可以轻松地搭建一个高效的后端服务。 在前端,我们可以使用echarts来展示实时数据。通过前端页面的WebSocket连接,我们可以接收后端推送的数据,并将数据实时更新到echarts图表上。通过echarts提供的动态更新功能,我们可以实现图表数据的实时更新,并展示在大屏上。 总的来说,基于echartsJava Spring Boot,我们可以搭建一个灵活、高效的动态实时大屏系统。通过后端的数据处理和前端的图表展示,我们可以实现实时数据的监控和展示,满足大屏需求。同时,由于echarts和Spring Boot都具有良好的文档和社区支持,我们可以轻松地实现系统的定制和扩展,满足不同场景的需求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值