ECharts 初探
關於ECharts的內容請瀏覽http://echarts.baidu.com/echarts2/doc/about.html
本例主要講解和演示基於Spring MVC + ECharts 的Demo。
第一步:下載ECharts,下載地址。
本例使用的型別為:
ECharts:echarts.min.js
JQuery:jquery-1.11.1.min.js
Spring:spring 4.3.10.RELEASE
第二步:環境搭建,請參考:Spring MVC環境搭建與基本操作
2.1 在WEB-INF下建立存放靜態資源的資料夾static
具體目錄結構為:
/WEB-INF/static/images
/WEB-INF/static/css
/WEB-INF/static/js
將所需要的js檔案放置在/WEB-INF/static/js目錄下。
2.2 修改xxxx-servlet.xml,增加如下配置。
<!-- 設定使用註解的類所在的jar包 -->
<context:component-scan base-package="com.mahaochen.paralegal" />
<bean
class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
<property name="messageConverters">
<list>
<bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter"></bean>
</list>
</property>
</bean>
<!-- 在Spring配置檔案中配置ViewResolver -->
<!-- ViewResolver -->
<!--
InternalResourceViewResolver:用於支援Servlet、JSP檢視解析;
viewClass:JstlView表示JSP模板頁面需要使用JSTL標籤庫,classpath中必須包含jstl的相關jar包;
prefix和suffix:查詢檢視頁面的字首和字尾(字首[邏輯檢視名]字尾),比如傳進來的邏輯檢視名為hello,則該該jsp檢視頁面應該存放在“WEB-INF/jsp/hello.jsp”;
-->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="viewClass" value="org.springframework.web.servlet.view.JstlView" />
<property name="prefix" value="/WEB-INF/jsp/" />
<property name="suffix" value=".jsp" />
</bean>
<!-- SpringMVC設定不攔截靜態資源css、js、images -->
<mvc:annotation-driven />
<mvc:resources location="/WEB-INF/static/images/" mapping="/images/**"/>
<mvc:resources location="/WEB-INF/static/css/" mapping="/css/**"/>
<mvc:resources location="/WEB-INF/static/js/" mapping="/js/**"/>
2.3 在WEB-INF/jsp/建立echarts.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">
<script type="text/javascript" src="/Paralegal/js/echarts.min.js"></script>
<script type="text/javascript" src="/Paralegal/js/jquery-1.11.1.min.js"></script>
<title>ECharts 測試頁面</title>
</head>
<body>
<h2>Login</h2>
<div id="main" style="width:100%; height:400px;"></div>
<button id="button" onclick="loadDatas()">按鈕</button>
</body>
<script type="text/javascript">
function loadDatas() {
var myChart = echarts.init(document.getElementById('main'));
// 顯示標題,圖例和空的座標軸
myChart.setOption({
title : {
text : '非同步資料載入示例'
},
tooltip : {},
legend : {
data : [ '釋出排行' ]
},
xAxis : {
data : []
},
yAxis : {
splitLine : {
show : false
},//去除網格線
name : ''
},
series : [ {
barWidth : "30px",
name : '釋出排行',
type : 'bar',
itemStyle : {
normal : {
label : {
show : true,
position : 'top',
textStyle : {
color : '#333'
}
}
}
},
data : []
} ]
});
myChart.showLoading(); //資料載入完之前先顯示一段簡單的loading動畫
var names = []; //類別陣列(實際用來盛放X軸座標值)
var nums = []; //銷量陣列(實際用來盛放Y座標值)
$.ajax({
contentType : "application/json",
type : 'get',
cache: false,
url : '/Paralegal/echarts/getDatas',//請求資料的地址
dataType : "json", //返回資料形式為json
success : function(result) {
//請求成功時執行該函式內容,result即為伺服器返回的json物件
$.each(result.list, function(index, item) {
names.push(item.depname); //挨個取出類別並填入類別陣列
nums.push(item.num); //挨個取出銷量並填入銷量陣列
});
myChart.hideLoading(); //隱藏載入動畫
myChart.setOption({ //載入資料圖表
xAxis : {
data : names
},
series : [ {
// 根據名字對應到相應的系列
name : '釋出排行', //顯示在上部的標題
data : nums
} ]
});
},
error : function(errorMsg) {
//請求失敗時執行該函式
alert("頁面請求資料失敗!");
myChart.hideLoading();
}
});
};
loadDatas();
</script>
</html>
2.3 編寫EChartsController
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Random;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
@Controller
@RequestMapping("/echarts")
public class EChartsController {
@RequestMapping("/test")
private String index(){
return "echarts";
}
@RequestMapping("/getDatas")
@ResponseBody
private Map<String, List<Map<String, Object>>> getDatas() {
Map<String, List<Map<String, Object>>> map = new HashMap<String, List<Map<String,Object>>>();
List<Map<String, Object>> list = new ArrayList<Map<String,Object>>();
for(int i=0;i<5;i++){
Map<String, Object> itmMap = new HashMap<String, Object>();
itmMap.put("depname", "dep"+i);
itmMap.put("num", new Random().nextInt(1000) );
list.add(itmMap);
}
map.put("list", list);
System.out.println(map);
return map;
}
}
第三步:效果演示。
注意事項:
GET訪問瀏覽器認為是等冪的。即一個相同的URL 只有一個結果[相同是指 整個URL字串完全匹配]
所以 第二次訪問的時候 如果 URL字串沒變化 瀏覽器是 直接拿出了第一次訪問的結果
POST則認為是一個 變動性 訪問 (瀏覽器 認為 POST的提交 必定是 有改變的)
防止 GET 的 等冪 訪問 就在URL後面加上 ?+new Date();,[總之就是使每次訪問的URL字串不一樣的]
設計WEB頁面的時候 也應該遵守這個原則。
可以通過修改
type : 'get',
cache: false,
type : 'get',
來測試驗證。 相關文章
- ECharts TooltipEcharts
- echarts 安裝 不顯示。TypeError: echarts__WEBPACK_EchartsErrorWeb
- ECharts 詳解Echarts
- ECharts的使用Echarts
- 關於EchartsEcharts
- ECharts 實戰Echarts
- echarts折線圖Echarts
- vue中引入echartsVueEcharts
- Vue中使用echartsVueEcharts
- echarts - 折線圖Echarts
- echarts環形圖Echarts
- Echarts的使用教程Echarts
- 深圳地圖echarts地圖Echarts
- 【爬坑日記】vue中引入echarts,報錯ReferenceError: echarts is not definedVueEchartsError
- Puppeteer 初探
- gRPC 初探RPC
- ## RATreeView 初探View
- 初探Firewalld
- Serverless初探Server
- Mobx 初探
- 初探PWA
- 初探TCPTCP
- 初探 BaconJSJS
- 初探 TypeScriptTypeScript
- Quantum 初探
- 初探 XSS
- 初探canvasCanvas
- puppeteer初探
- Promise初探Promise
- websoctet初探Web
- 初探 Recompose
- jsbridge初探JS
- Nginx 初探Nginx
- Deno 初探
- ELK初探
- Quartz初探quartz
- 初探IndexedDBIndex
- jQuery初探jQuery