该方法返回的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. 基于容器微服务的PaaS云平台设计(二)通过kubernetes实现微服务容器管理

    版权声明:本文为博主原创文章,欢迎转载,转载请注明作者.原文超链接 ,博主地址:http://www.cnblogs.com/SuperXJ/ 上一章描述了基于spring cloud的微服务实例(实 ...

  2. ASP.NET Core中的OWASP Top 10 十大风险-SQL注入

    不定时更新翻译系列,此系列更新毫无时间规律,文笔菜翻译菜求各位看官老爷们轻喷,如觉得我翻译有问题请挪步原博客地址 本博文翻译自: https://dotnetcoretutorials.com/201 ...

  3. Appium python自动化测试系列之自动化截图(十一)

    11.1 截图函数的正常使用 11.1.1 截图方法 无论是在手动测试还是自动化测试中场景复现永远是一个很重要的事情,有时候一些问题可能很难复现,这个都需要测试人员对bug有很高的敏感度,在一般的情况 ...

  4. Spring读书笔记——bean创建(下)

    有关Spring加载bean系列,今天这是最后一篇了,主要接上篇对于从Spring容器中获取Bean的一些细节实现的补充. <Spring读书笔记--bean加载>--Spring如何加载 ...

  5. poj 2486 Apple Tree(树形DP 状态方程有点难想)

    Apple Tree Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 9808   Accepted: 3260 Descri ...

  6. C#使用Oracle.ManagedDataAccess.dll

    在刚接触C#的时候由于公司使用的就是Oracle数据库,那么C#怎么连接Oracle数据库就成了首要去掌握的知识点了.在那时没有ODP.NET,但visual studio却对Oralce数据库的调用 ...

  7. 按键精灵 vbs 获取网页源码 xp系统被拒绝

    如下面的代码所示,获取新浪博客某个指定网页的源码 verurl = "http://blog.sina.com.cn/s/blog_9ea1db7b0101o7ch.html?" ...

  8. 入门到熟练-SpringBoot

    Spring Boot概述 1.1. Spring Boot是什么 Spring Boot是一套基于Spring框架的微服务框架. 1.2. Spring Boot框架出现的背景 由于Spring是一 ...

  9. oracle数据库表实现主键自增功能

    有关oracle中自增序列sequence+触发器trigger:实现数据表TABDATA_LIVE_CYCLE中的主键id的自增. CREATE SEQUENCE TABDATA_LIVE_CYCL ...

  10. 异步获取CMD命令行输出内容

    当控制台命令使用process.Start(); 后可以直接显示输出内容,当然它是异步显示的不用等程序结束.代码如下: using System;using System.Collections.Ge ...