ECharts Java 动态加载数据

使用ECharts实现各种数据统计图(饼图,柱状图,折线图)在javaWeb中的应用 具体的资源及页面代码在后文可下载 准备工作:要下载ECharts的源文件 第一步:在web端既新建一个jsp页面 第二步:引入ECharts的js 第三步:为ECharts准备一个具备大小(宽高)的容器 第四部:为模块加载器配置echarts的路径,从当前页面链接到echarts.js,定义所需图表路径 第五步:动态加载echarts然后 阅读详情

1、前台JSP页面

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
	<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
	<title>ECharts</title>
	<script type="text/javascript" src="${ctx}/plugins/echarts-2.2.1/echarts.js"></script>
	<script type="text/javascript" src="${ctx}/plugins/jquery-1.8.3/jquery-1.8.3.min.js"></script>
	<script type="text/javascript">
		// 配置路径
		require.config({
			paths: {
				echarts: '${ctx}/plugins/echarts-2.2.1'
			}
		});
		
		// 按需加载
		require(
			[
			 	'echarts', 
			 	'echarts/chart/bar',
			 	'echarts/chart/line'
			],
			function (ec) {
				var chart = document.getElementById('chart');
				var echart = ec.init(chart);
				
				echart.showLoading({
					text: '正在努力加载中...'
				});
				
				var categories = [];
				var values = [];
				
				// 同步执行
				$.ajaxSettings.async = false;
				
				// 加载数据
				$.getJSON('${ctx}/dataAccessServlet', function (json) {
					categories = json.categories;
					values = json.values;
				});
				
				var option = {
					tooltip: {
						show: true
					},
					legend: {
						data: ['销量']
					},
					xAxis: [
					    {
					    	type: 'category',
					    	data: categories
					    }
					],
					yAxis: [
					    {
					    	type: 'value'
					    }
					],
					series: [
					    {
					    	'name': '销量',
					    	'type': 'bar',
					    	'data': values
					    }
					]
				};
				
				echart.setOption(option);
				echart.hideLoading();
			}
		);
	</script>
</head>
<body>
	<div id="chart" style="width: 580px;height: 420px;margin: 0 auto;border: 1px solid gray;"></div>
</body>
</html>
2、后台JSON数据

protected void doPost(HttpServletRequest request,
		HttpServletResponse response) throws ServletException, IOException {
	String[] categories = {"鞋", "衬衫", "外套", "牛仔裤"};
	Integer[] values = {80, 50, 75, 100};
	Map<String, Object> json = new HashMap<String, Object>();
	json.put("categories", categories);
	json.put("values", values);
	JsonUtils.writeJson(json, request, response);
}

3、FastjsonPropertyFilter

package com.echarts.utils.json;

import java.util.HashSet;
import java.util.Set;

import com.alibaba.fastjson.serializer.PropertyFilter;

/**
 * FASTJSON属性过滤器
 * 
 * @author MrChu
 * @version 1.0
 * @date 2015年3月12日
 */
public class FastjsonPropertyFilter implements PropertyFilter {
	
	private final Set<String> includes = new HashSet<String>();
	private final Set<String> excludes = new HashSet<String>();
	
	public boolean apply(Object source, String name, Object value) {
		if (excludes.contains(name)) {
			return false;
		}
		if (excludes.contains(source.getClass().getSimpleName() + "." + name)) {
			return false;
		}
		if (includes.size() == 0 || includes.contains(name)) {
			return true;
		}
		if (includes.contains(source.getClass().getSimpleName() + "." + name)) {
			return true;
		}
		return false;
	}
	
	public Set<String> getIncludes() {
		return includes;
	}
	
	public Set<String> getExcludes() {
		return excludes;
	}
	
}

4、JsonUtils

package com.echarts.utils.json;

import java.io.IOException;
import java.io.PrintWriter;
import java.util.Arrays;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.serializer.SerializerFeature;

/**
 * JSON工具类
 * 
 * @author MrChu
 * @version 1.0
 * @date 2015年3月12日
 */
public class JsonUtils {
	
	public static void writeJson(Object object, 
			HttpServletRequest request, HttpServletResponse response) {
		writeJsonByFilter(object, null, null, request, response);
	}
	
	public static void writeJsonByIncludesProperties(Object object, String[] includesProperties,
			HttpServletRequest request, HttpServletResponse response) {
		writeJsonByFilter(object, includesProperties, null, request, response);
	}
	
	public static void writeJsonByExcludesProperties(Object object, String[] excludesProperties,
			HttpServletRequest request, HttpServletResponse response) {
		writeJsonByFilter(object, null, excludesProperties, request, response);
	}
	
	public static void writeJsonByFilter(Object object, String[] includesProperties,
			String[] excludesProperties, HttpServletRequest request, HttpServletResponse response) {
		response.setContentType("text/html;charset=utf-8");
		response.setHeader("Cache-Control", "no-cache");
		PrintWriter writer = null;
		try {
			writer = response.getWriter();
			FastjsonPropertyFilter filter = new FastjsonPropertyFilter();
			if (includesProperties != null && includesProperties.length > 0) {
				filter.getIncludes().addAll(Arrays.<String> asList(includesProperties));
			}
			if (excludesProperties != null && excludesProperties.length > 0) {
				filter.getExcludes().addAll(Arrays.<String> asList(excludesProperties));
			}
			String userAgent = request.getHeader("User-Agent");
			if (userAgent.indexOf("MSIE") > -1 && (userAgent.indexOf("MSIE 6") > -1)) {
				writer.write(JSON.toJSONString(object, filter, 
						SerializerFeature.WriteDateUseDateFormat, 
						SerializerFeature.DisableCircularReferenceDetect, 
						SerializerFeature.BrowserCompatible));
			} else {
				writer.write(JSON.toJSONString(object, filter, 
						SerializerFeature.WriteDateUseDateFormat, 
						SerializerFeature.DisableCircularReferenceDetect));
			}
			writer.flush();
		} catch (IOException e) {
			e.printStackTrace();
		} finally {
			if (writer != null) {
				writer.close();
			}
		}
	}

}

5、最终实现效果



ECharts首页:http://echarts.baidu.com/

ECharts Java 类库:http://git.oschina.net/free/ECharts

Echarts图表开发之饼图 在相关的后台系统开发中,有一个必不可少的模块就是图表主题分析。通过图表分析,可以更加直观的展示业务的发展状态及各个业务占比情况,更加有利于公司领导做出相应的决策。在开发的最近一个项目中,有用到了Java 的 Echarts 开发其相应的后台图表主题分析模块功能。既然用到了,就概要的说下,希望以后在需要使用或者有其他人需要使用的话,只需要看下教程就可以立即上手操作使用,而不需要重新去看文档花掉很多时 阅读详情

相关推荐

Jsp+Servlet+Echarts实现动态数据可视化

Echarts(3.x版)官网实例的数据都是静态的,实际使用中往往会要求从服务器端取数据进行动态显示,官网教程里给出的异步数据加载很粗略,下面就以官网最简单的实例为例子,详细演示如下过程:1.客户端通过ajax发送请求;2.服务器端Servlet接收请求;3.生成json数据并返回给客户端;4.客户端接收数据后显示。 1.客户端通过ajax发送请求 先绘制一个最简单的Echarts图表: (这里就...

空空说技术的博客 1万+

ECharts Java 动态加载数据,echartsjava

1、前台jsp页面<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"

米洛尔的博客 645

echarts饼图动态数据加载

前台页面: <%@ page contentType="text/html;charset=UTF-8" language="java" %> <% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+...

qq_41508632的博客 4434

使用Echarts绘制折线图,异步加载数据实现动态更新

文章目录前言一、官方文档二、最终效果展示三、使用本地数据加载折线图1.代码2.执行效果和代码说明3.常用组件的属性介绍1.X轴/Y轴/线(xAxis/xAxis/series)2.其余组件(title/legend/grid)四、异步数据加载折线图(ajax请求)1.前端js代码2.后端代码(python实现,flask框架)总结 前言 因为比赛需要将数据可视化,在前端以折线图的形式展现,而Echart就是一个基于 JavaScript 的开源可视化图表库。成功实现后写一篇博客记录一下过程~~ 一、官方文档

sinat_41635316的博客 1万+

SSM框架使用Echarts绘制动态数据可视化图表

SSM框架使用Echarts绘制动态数据可视化图表 1.前言 ECharts,一个使用 JavaScript 实现的开源可视化库,可以流畅的运行在 PC 和移动设备上,兼容当前绝大部分浏览器(IE8/9/10/11,Chrome,Firefox,Safari等),底层依赖轻量级的矢量图形库 ZRender,提供直观,交互丰富,可高度个性化定制的数据可视化图表。 而在实际开发中使用的往往会要求...

空空说技术的博客 2万+

Echarts—饼状图动态获取数据示例(java版本)

最终效果 折线图:折线图示例,使劲点我!!! 柱状图:柱状图示例,使劲点我!!! 步骤:准备一个dom——>获取dom节点——>初始化——>绘制图表——>渲染数据 html代码 <el-col :span="12"> <div id="chartPie" style="width:100%; height:400px;"></...

邓商羽的博客 4733

Echarts—折线图动态获取数据示例(java版本)

最终效果 饼状图:饼状图示例,使劲点我!!! 柱状图:柱状图实例,使劲点我!!! 步骤:准备一个dom——>获取dom节点——>初始化——>绘制图表——>渲染数据 html代码 <template> <section class="chart-container"> <el-row> <el-badge ...

邓商羽的博客 6007

vue之echarts动态获取数据制作饼状图

好久没写博客了,最近碰到了如何运用echarts制作各种图表的问题,在几番百度之后,问题终于得到了解决,现在来和大家分享一下。 之前所做的是影城管理系统,需要统计各个类型影片的数量,要通过饼状图的方式来展示相应的数据,后端代码是用springboot写的,结合了mybatis,接下来我只展示主要的代码。 首先FilmMapper接口中定义的方法如下: /** * 按照类别...

autumn_leaf blog 9692

使用ECharts创建动态数据可视化图表

强大的可定制性:支持多种类型的图表,如折线图、柱状图、饼图等,并且可以自定义图表样式和交互行为。丰富的数据展示能力:支持动态数据更新和实时刷新,适用于需要频繁更新数据的场景。跨平台兼容性:可以在各种现代浏览器和移动设备上运行,并支持响应式设计。通过以上步骤,您已经学会了如何使用ECharts创建动态数据可视化图表。在实际应用中,您可以根据具体需求,进一步定制图表样式和交互效果,以满足不同的业务场景需求。ECharts强大的可定制性和丰富的数据展示能力,使其成为Web应用开发中不可或缺的重要工具。

聚娃科技开发者博客 1612

echarts异步加载多组数据

说明 创建的maven项目 需要echarts.js和jquery.js echarts.min.js jquery-3.2.1.min.js 官网介绍Echarts官网链接初步教程初步教程,搭建环境异步加载 异步加载案例有加载一组数据 加载两组数据 加载饼图数据 加载一组数据前台处理首先看加载条形图的数据结构option = { title: { text: 'EC

二进制的博客 3230

echarts 动态数据交互实例

最近在学习echarts,找到了很多的资料,找起来比较麻烦,为了方便自己以后的使用,特此做个笔记。 首先是echarts如何使用,要先下载echarts相关的包,我这边提供的是echarts3.0的下载地址:http://echarts.baidu.com/download.html 之前看到echarts2.0的引入有两种方法:模块化单文件引入和标签式单文件引入,介绍如下,感兴趣的可以看一看

ruoshui09172104的博客 1万+

完整版echarts实时显示sql数据库数据

** 首先讲一讲!echarts官网很多很多的例子都是静态数据,对于开发者后续的开发确实不太友好,而且网上许多地方都是部分重要代码,对初学者而言也难以整体掌握。当然我也是初学者中的一员,这次成功的实现可视化之后就打算写篇完整的代码提供给初学者学习。 ** 首先新建web项目; 给点初始化dom(记得引入echarts、jquery文件) <div id="main" style="hei...

qq_25827785的博客 1万+

Echarts连接数据库,实时绘制动态图

Echarts实现动态绘制折线图,连接数据库

小蜗牛的珍贵百宝箱 1万+

SSM+echarts动态实现数据展示

前台页面: <%@ page contentType="text/html;charset=UTF-8" language="java" %> <% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+...

qq_41508632的博客 3205

Echarts—柱状图动态获取数据示例(java版本)

最终效果 饼状图:饼状图示例,使劲点我!!! 折线图:折线图示例,使劲点我!!! 步骤:准备一个dom——>获取dom节点——>初始化——>绘制图表——>渲染数据 html代码 创建一个指定大小的dom <el-col :span="12"> <div id="chartColumn" style="width:100%; heig...

邓商羽的博客 3732

高能物理相关软件

国内高能物理实验背景     研究物质最深层次结构及相互作用的前沿基础科学。 现代高能物理实验的要素    实例源 、 探测器、   电子学、  触发 DAQ、  原始数据、 刻度、重建 、物理分析、  成果  。 离线软件的地位和作用。    是硬件设备和物理学家的桥梁,是从数据到物理成果转化中的关键和重要的环节。 高能物理实验及其特点 独一无二性,实验规模越来越大,努力省钱(使用

Alan Zhuang的博客 3299
上一篇: Java HashMap与LinkedHashMap的区别
下一篇: 在互联网公司和行业软件公司上班,有什么区别?
码农先生
博客等级 码龄15年 52粉丝 40原创
评论 53
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值