Echarts(3.x 版)官网实例的数据都是静态的,实际使用中往往会要求从服务器端取数据进
行动态显示,官网教程里给出的异步数据加载很粗略,下面就以官网最简单的实例为例子,
详细演示如下过程:1.客户端通过 ajax 发送请求;2.服务器端 Servlet 接收请求;3.生成 json
数据并返回给客户端;4.客户端接收数据后显示。
1.客户端通过 ajax 发送请求
先绘制一个最简单的 Echarts 图表:
(这里就直接贴上代码了,直接用的是官网教程里异步数据加载和更新里的代码)
html
PUBLIC
"-//W3C//DTD
HTML
4.01
Transitional//EN"
ECharts
看到了吧,现在 option 中的 xAxis 和 yAxis 里的 data 都是空值。待会儿我们会用从服务器
取回的数据去”填满“它。
下面贴上补充了 ajax 部分的完整前端代码:
html
PUBLIC
"-//W3C//DTD
HTML
4.01
Transitional//EN"
ECharts
2.服务器端 Servlet 接收请求
客户端的请求 url 是’TestServlet‘,那我们得先在 web.xml 配置以下映射:
TestServlet
test.TestServlet
TestServlet
@Override
protected
void
doPost(HttpServletRequest
request,
HttpServletResponse response) throws ServletException, IOException {
List
list = new ArrayList();
//这里把“类别名称”和“销量”作为两个属性封装在一个 Product
类里,每个 Product 类的对象都可以看作是一个类别(X 轴坐标值)与销量(Y
轴坐标值)的集合
list.add(new Product("衬衣", 10));
list.add(new Product("短袖", 20));
list.add(new Product("大衣", 30));
ObjectMapper mapper = new ObjectMapper();
//提供 java-json
相互转换功能的类
String json = mapper.writeValueAsString(list);
//将 list 中
的对象转换为 Json 格式的数组
//System.out.println(json);
//将 json 数据返回给客户端
response.setContentType("text/html; charset=utf-8");
response.getWriter().write(json);
}
TestServlet 类中用到的自定义的 Product 类代码如下:
package test;
public class Product {
private String name;
private int num;
//类别名称
//销量
public Product(String name, int num) {
this.name = name;
this.num = num;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getNum() {
return num;
}
public void setNum(int num) {
this.num = num;
}
}
4.客户端接收数据后显示
客户端接受服务器数据并解析后,就可以正常显示图表数据了: