最近在工作中使用到了Echarts来制作图表,在网上搜了好多例子几乎都是千篇一律的在前台写死一些js,然后把变量通过ajax或者遍历集合的方式插进去,这样子一旦某一页面的图表一多,就会异常混乱,偶然在开源中国看到有人做成了个Echarts对象的jar包,在后台进行完美封装传回一个option在前台接收了并set进option即可。试了试,效果非常好。
下面给出例子代码:

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

[html] view plaincopy print?
  1. public String keyword() {
  2. if(this.dateNum == null || this.dateNum.equals("")) {
  3. this.dateNum = "5" ;
  4. }
  5. return "keyword" ;
  6. }

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

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

[html] view plaincopy print?
  1. public String getKeyWordData() throws ParseException{
  2. LoginUser user = (LoginUser) ((SecurityContext) ServletActionContext
  3. .getRequest().getSession()
  4. .getAttribute("SPRING_SECURITY_CONTEXT")).getAuthentication()
  5. .getPrincipal();
  6. Long id = user.getId() ;
  7. int num = Integer.parseInt(this.dateNum) ;
  8. jsonObj = new JSONObject() ;
  9. //取到该用户的所有关键字放入legendName数组
  10. List<String> names = this.cacheCountManager.getKeywordNames(id) ;
  11. String[] legendName = new String[names.size()] ;
  12. for(int i=0;i<names.size();i++) {
  13. String name = names.get(i) ;
  14. legendName[i] = name ;
  15. }
  16. String[] riqiArr = new String[num] ;
  17. for(int j=num;j>0;j--) {
  18. String riqi = getStrDate(String.valueOf(j)) ;
  19. riqiArr[num-j] = riqi ;
  20. }
  21. Option option=new GsonOption();
  22. option.title().text("关键词文章统计");
  23. option.tooltip().trigger(Trigger.axis);
  24. option.legend().data(legendName);
  25. ValueAxis axis = new ValueAxis();
  26. axis.type(AxisType.category).boundaryGap(false).data(riqiArr);
  27. option.xAxis(axis);
  28. CategoryAxis yaxis = new CategoryAxis();
  29. yaxis.type(AxisType.value);
  30. option.yAxis(yaxis);
  31. List<Series> seriess = new ArrayList<Series>() ;
  32. MarkPoint mp = new MarkPoint() ;
  33. mp.data(new Data().type(MarkType.max).name("最大值"),
  34. new Data().type(MarkType.min).name("最小值")) ;
  35. for(int i=0;i<names.size();i++) {
  36. Integer[] countArr = new Integer[num] ;
  37. Line line = new Line() ;
  38. String name = names.get(i) ;
  39. for(int j=num;j>0;j--) {
  40. String riqi = getStrDate(String.valueOf(j)) ;
  41. countArr[num-j] = this.cacheCountManager.getCount(id, riqi, name) ;
  42. }
  43. line.name(name).type(SeriesType.line).data(countArr).markPoint(mp) ;
  44. seriess.add(line) ;
  45. }
  46. option.series(seriess);
  47. jsonObj=JSONObject.fromObject(option.toString());
  48. return "echartsJson";
  49. }

页面显示部分很简洁。

[html] view plaincopy print?
  1. <div id="main"  style="height: 400px; border: 1px solid #ccc; padding: 10px;">图形正在加载中...</div>
[html] view plaincopy print?
  1. $(function(){
  2. require([ 'echarts','echarts/chart/line' ],DrawEChart);
  3. });
[html] view plaincopy print?
  1. function DrawEChart(ec) {
  2. var myChart;
  3. myChart = ec.init(document.getElementById('main'));
  4. myChart.showLoading({
  5. text: "图表数据正在努力加载...",
  6. });
  7. var date = $("#dateNum").val() ;
  8. $.ajax({
  9. type : "post",
  10. data:{"dateNum":date},
  11. url : "${ctx}/statistics/statistics!getKeyWordData.action",
  12. dataType : "json",
  13. success : function(data) {
  14. myChart.setOption(data.jsonObj);
  15. myChart.hideLoading();
  16. },
  17. error : function(errorMsg) {
  18. alert("不好意思大爷,图表请求数据失败啦!");
  19. }
  20. });
  21. }

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

Echarts后台option对象相关推荐

  1. javascript select option对象总结

    javascript select option对象总结 一基础理解: var e = document.getElementById("selectId"); e. option ...

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

    2019独角兽企业重金招聘Python工程师标准>>> 原生js 的add函数为下拉菜单增加选项 1.object.add(oElement [, iIndex]) index 可选 ...

  3. 前端:JS/35/二级联动菜单,select对象,select对象的属性,option对象,option对象属性,实例:省份列表与城市列表的联动

    二级联动菜单 select 对象 一个<select>标记,对应一个select对象: select对象的属性 1,options[] :设置或返回下拉列表中<option>标 ...

  4. jQuery取得列表控件选中的option对象

    开发工具与关键技术:VS   后端 作者:陈芝番 撰写时间:2019.7.7 这个jQuery取得列表控件选中的option对象,比起原始表单控件清晰看到option对象,但还是各有各的特点,jQue ...

  5. ECharts学习总结(五):echarts的Option概览

    注:下面内容摘自echarts官网,原文地址:http://echarts.baidu.com/doc/doc.html#%E9%80%89%E9%A1%B9 option 图表选项,包含图表实例任何 ...

  6. Echarts中Option属性设置

    一.title--标题组件 标题组件,包含主标题和副标题. title:{x:"left", // 'left' | 'right' | 'center' | '100px'y:& ...

  7. Web前台传对象字符串到后台并让后台反序列化对象字符串的方法(ASP.NET) json对象和字符串的转换

    从零开始做了两个月多一点的.NET开发,期间经常遇到需要从Web前台传数据给后台处理的情况.比如下面(用了jQuery的Ajax Post),这里为了演示方便没有对参数进行encodeURICompo ...

  8. vue+echarts 后台获取数据_vue+element+echarts 响应式后台管理系统,了解一下?

    寒假结束了,趁着寒假,自己玩了一下element和echarts去实现了一个简单的后台管理系统. 项目比较简单,十分适合入门,涉及到了轮播图,表格,表单,echarts柱形图和折线图,以及网页的响应式 ...

  9. postman 传递数组对象_postman json请求参数向JAVA后台传对象以及数组

    一,JSON格式传递实体类对象,postman请求参数格式如下(Headers请求头添加 Content-Type:application/json) 后台接收如下(@ResponseBody用于数据 ...

最新文章

  1. 删除单链表中的重复节点(c语言版本)
  2. 不能摸鱼的工作不是好工作?
  3. 常考数据结构与算法:反转字符串
  4. How mBDOC is generated and saved in DB
  5. C#中使用DTS来导入数据及相关问题
  6. Towards Efficient Privacy-Preserving Inspection of TLS Encrypted Traffic
  7. day27 java的集合(5) HashMap集合和与Hashtable的区别
  8. Java虚拟机的什么周期
  9. 几个安卓 app 暴露超1亿用户的数据
  10. ogg sqlserver2012 抽取不到日志_ogg抽取进程与数据字典的关系
  11. LOL登录后黑屏,主界面一直加载解决办法
  12. linux下载安装命令
  13. 销售管理系统java sql_java+sqlserver商品销售管理系统的设计与实现
  14. java标识符规范书写的规则
  15. 性能测试专项:帧率测试 FPS
  16. PMCAFF微课17期 - 教你如何用数据玩转移动互联网APP运营(笔记下载)
  17. 网页播放视频没有进度条怎么可以实现倍速播放
  18. 黑群晖linux安装教程,黑群晖菜鸟安装教程(一)制作U盘引导及软洗白!
  19. 计算机毕业设计ssm工作室管理系统v186g系统+程序+源码+lw+远程部署
  20. php file取不到手机相册,php file_get_contents 读取不了图片

热门文章

  1. 大数据使用及现状调研报告
  2. Centos/ubuntu配置SVN服务
  3. [0] Tornado Todo 开篇
  4. Ext.MessageBox.Show使用Progress
  5. Svchost.exe进程详解及Svchost.exe病毒清除方法
  6. 【Visual C++】游戏开发笔记四十 浅墨DirectX教程之八 绘制真实质感的三维世界:光照与材质专场...
  7. SQLDump***.txt
  8. 用设计模式去掉没必要的状态变量 —— 状态模式
  9. CodeBlocks 导航栏/输出栏/菜单栏消失
  10. intellij无法输入中文