该方法返回的keyword指向了前台负责图表显示的jsp页面

public String keyword() {
if(this.dateNum == null || this.dateNum.equals("")) {
this.dateNum = "5" ;
}
return "keyword" ;
}

该方法根据jsp的ajax传回来显示的条数dateNum进行数据库取值(这地方我没有使用实时拿值,而是通过定时来把数据更新进一张表,从而图表拿值会非常迅速)

可以看出我定义了一个Option对象,里面的参数都可以在里面以方法或者属性的方式调用。最后封装好Option后,把他放入jsonObject对象传回前台一接收json值即可。

public String getKeyWordData() throws ParseException{
LoginUser user = (LoginUser) ((SecurityContext) ServletActionContext
.getRequest().getSession()
.getAttribute("SPRING_SECURITY_CONTEXT")).getAuthentication()
.getPrincipal();
Long id = user.getId() ;
int num = Integer.parseInt(this.dateNum) ;
jsonObj = new JSONObject() ;
//取到该用户的所有关键字放入legendName数组
List<String> names = this.cacheCountManager.getKeywordNames(id) ;
String[] legendName = new String[names.size()] ;
for(int i=0;i<names.size();i++) {
String name = names.get(i) ;
legendName[i] = name ;
}
String[] riqiArr = new String[num] ;
for(int j=num;j>0;j--) {
String riqi = getStrDate(String.valueOf(j)) ;
riqiArr[num-j] = riqi ;
}
Option option=new GsonOption();
option.title().text("关键词文章统计");
option.tooltip().trigger(Trigger.axis);
option.legend().data(legendName);
ValueAxis axis = new ValueAxis();
axis.type(AxisType.category).boundaryGap(false).data(riqiArr);
option.xAxis(axis);
CategoryAxis yaxis = new CategoryAxis();
yaxis.type(AxisType.value);
option.yAxis(yaxis);
List<Series> seriess = new ArrayList<Series>() ;
MarkPoint mp = new MarkPoint() ;
mp.data(new Data().type(MarkType.max).name("最大值"),
new Data().type(MarkType.min).name("最小值")) ;
for(int i=0;i<names.size();i++) {
Integer[] countArr = new Integer[num] ;
Line line = new Line() ;
String name = names.get(i) ;
for(int j=num;j>0;j--) {
String riqi = getStrDate(String.valueOf(j)) ;
countArr[num-j] = this.cacheCountManager.getCount(id, riqi, name) ;
}
line.name(name).type(SeriesType.line).data(countArr).markPoint(mp) ;
seriess.add(line) ;
}
option.series(seriess);
jsonObj=JSONObject.fromObject(option.toString());
return "echartsJson";
}

页面显示部分很简洁。

<div id="main"  style="height: 400px; border: 1px solid #ccc; padding: 10px;">图形正在加载中...</div>

$(function(){
require([ 'echarts','echarts/chart/line' ],DrawEChart);
});

 

function DrawEChart(ec) {
var myChart;
myChart = ec.init(document.getElementById('main'));
myChart.showLoading({
text: "图表数据正在努力加载...",
});
var date = $("#dateNum").val() ;
$.ajax({
type : "post",
data:{"dateNum":date},
url : "${ctx}/statistics/statistics!getKeyWordData.action",
dataType : "json",
success : function(data) {
myChart.setOption(data.jsonObj);
myChart.hideLoading();
},
error : function(errorMsg) {
alert("不好意思大爷,图表请求数据失败啦!");
}
});
}

jar包下载:http://mvnrepository.com/artifact/com.github.abel533/ECharts

Echarts后台封装option对象的更多相关文章

  1. Spring 将请求参数封装成对象

    简单描述:最近手里的模块,前后台之间需要传递很多的参数,使用封装的PageData,来获取请求参数的,作微服务迁移的时候,就涉及到需要把参数从pagedata里取出来,一个一个的放到对象的属性中.就很 ...

  2. FastJson解析Json,封装JavaBean对象

    获取到前端的Json,后台对应封装JavaBean对象,对其解析赋值 获取到前端的json,对其进行分析 1.获取最外层前端json对应得JavaBean (1)未分析格式的json串 (2)初步格式 ...

  3. aes加解密后续问题contentType不是application/json时候后台解析请求对象request

    一.post请求的三种content-type 1.application/x-www-form-urlencoded 主要用于如下:1.1: 最常见的POST提交数据方式.1.2:原生form默认的 ...

  4. 用C语言封装OC对象(耐心阅读,非常重要)

    用C语言封装OC对象(耐心阅读,非常重要) 本文的主要内容来自这里 前言 做iOS开发的朋友,对OC肯定非常了解,那么大家有没有想过OC中NSInteger,NSObject,NSString这些对象 ...

  5. option对象概念

    一.基础理解: var e = document.getElementById("selectId");   e.options = new Option("文本&quo ...

  6. hibernate将本地SQL查询结果封装成对象

    hibernate将本地SQL查询结果封装成对象 不知道大家有没有碰过这种情况,迫于很多情况只能用native SQL来查询(如:复杂统计等),然而使用native查询后,结果会被放到object里, ...

  7. select 下拉菜单Option对象使用add(elements,index)方法动态添加

    原生js 的add函数为下拉菜单增加选项 1.object.add(oElement [, iIndex]) index 可选参数:指定元素放置所在的索引号,整形值.如果没有指定值,将添加到集合的最后 ...

  8. 下拉菜单中的Option对象

    1.创建Option对象 1.1 var optionEle1 = document.createElement('option'); 1.2 var optionEle2 = new Option( ...

  9. XML解析之sax解析案例(二)使用sax解析把 xml文档封装成对象

    Demo1类: import java.io.File; import java.util.List; import javax.xml.parsers.SAXParser; import javax ...

随机推荐

  1. Linux系统挂载操作mount详解

    在Linux系统中,文件系统不挂载是无法使用的.挂载,即是让文件系统在操作系统中可用.在Linux中使用mount命令来挂载文件系统,有永久性挂载和临时性挂载两种挂载方式. 1. 永久性挂载: 修改配 ...

  2. IIS 服务无法在此时接受控制信息

    应用程序池无法重新启动,报错:服务无法在此时接受控制信息 解决方法:重启 Credential Manager服务即可

  3. Winsock网络编程笔记(3)----基于UDP的server和client

    在上一篇随笔中,对Winsock中基于tcp面向连接的Server和Client通信进行了说明,但是,Winsock中,Server和Client间还可以通过无连接通信,也就是采用UDP协议.. 因此 ...

  4. java爬虫--jsoup简单的表单抓取案例

    分析需求: 某农产品网站的农产品价格抓取 网站链接:点击打开链接 页面展示如上: 标签展示如上: 分析发现每日价格行情包括了蔬菜,水果,肉等所有的信息,所以直接抓每日行情的内容就可以实现抓取全部数据. ...

  5. 离散型特征编码方式:one-hot与哑变量

    在机器学习问题中,我们通过训练数据集学习得到的其实就是一组模型的参数,然后通过学习得到的参数确定模型的表示,最后用这个模型再去进行我们后续的预测分类等工作.在模型训练过程中,我们会对训练数据集进行抽象 ...

  6. AngularJS学习篇(二十二)

    AngularJS 依赖注入 什么是依赖注入 wiki 上的解释是:依赖注入(Dependency Injection,简称DI)是一种软件设计模式,在这种模式下,一个或更多的依赖(或服务)被注入(或 ...

  7. Flex 基础语法(二)

    1.flex -direction 属性 含义 row(默认值) 主轴为水平方向,起点在左端. row-reverse 主轴为水平方向,起点在右边. column 主轴为垂直方向,起点在上沿. col ...

  8. 部署 Graylog 日志系统 - 每天5分钟玩转 Docker 容器技术(92)

    Graylog 是与 ELK 可以相提并论的一款集中式日志管理方案,支持数据收集.检索.可视化 Dashboard.本节将实践用 Graylog 来管理 Docker 日志. Graylog 架构 G ...

  9. Nginx-动态路由升级版

    前几篇文章我们介绍了Nginx的配置.OpenResty安装配置.基于Redis的动态路由以及Nginx的监控. Nginx-OpenResty安装配置 Nginx配置详解 Nginx技术研究系列1- ...

  10. [Redis源码阅读]sds字符串实现

    初衷 从开始工作就开始使用Redis,也有一段时间了,但都只是停留在使用阶段,没有往更深的角度探索,每次想读源码都止步在阅读书籍上,因为看完书很快又忘了,这次逼自己先读代码.因为个人觉得写作需要阅读文 ...