echarts通过ajax向服务器发送post请求,servlet从数据库读取数据并返回前端
1.echarts的官网上的demo,都是直接写死的随机数据,没有和数据库的交互,所以就自己写了一下,ok,我们开始一步一步走一遍整个流程吧。
就以官网最简单的那个小demo来做修改吧。官网上的小demo的效果图如下:(很熟悉,有没有)
2.按照echarts的使用方法新建一个echarts.html文件。为ECharts准备一个具备大小(宽高)的Dom(讲的有点细,熟悉的朋友直接跳过)
- <!DOCTYPE html>
- <head>
- <meta charset="utf-8">
- <title>ECharts</title>
- </head>
- <body>
- <!-- 为ECharts准备一个具备大小(宽高)的Dom -->
- <div id="main" style="height:400px"></div>
- </body>
新建<script>标签引入符合AMD规范的加载器,如esl.js,引入jquery为等一下AJAX发送POST请求做准备
- <script src="echarts/esl.js"></script>
- <script src="echarts/jquery.min.js"></script>
路径配置
- // 路径配置
- require.config({
- paths:{
- 'echarts' : 'echarts/echarts',
- 'echarts/chart/bar' : 'echarts/echarts'
- }
- });
最后是使用:以下代码是官网上的,红色部分的data数据等一下我们修改一下从数据库中去读取
- // 使用
- require(
- [
- 'echarts',
- 'echarts/chart/bar' // 使用柱状图就加载bar模块,按需加载
- ],
- function (ec) {
- // 基于准备好的dom,初始化echarts图表
- var myChart = ec.init(document.getElementById('main'));
- var option = {
- tooltip: {
- show: true
- },
- legend: {
- data:['销量']
- },
- xAxis : [
- {
- type : 'category',
- data : ["衬衫","羊毛衫","雪纺衫","裤子","高跟鞋","袜子"]
- }
- ],
- yAxis : [
- {
- type : 'value'
- }
- ],
- series : [
- {
- "name":"销量",
- "type":"bar",
- "data":[5, 20, 40, 10, 10, 20]
- }
- ]
- };
- // 为echarts对象加载数据
- myChart.setOption(option);
- }
- );
整个前段页面的代码如下:主要就是修改了option中的xAxis的data和series中的data,这2个data在官网的demo中都是直接写死的,这里我们采用AJAX发送post请求
- <!DOCTYPE html>
- <head>
- <meta charset="utf-8">
- <title>ECharts</title>
- <!-- 来自百度CDN -->
- <script src="echarts/esl.js"></script>
- <script src="echarts/jquery.min.js"></script>
- </head>
- <body>
- <!-- 为ECharts准备一个具备大小(宽高)的Dom -->
- <div id="main" style="height:400px"></div>
- <script type="text/javascript">
- // 路径配置
- require.config({
- paths:{
- 'echarts' : 'echarts/echarts',
- 'echarts/chart/bar' : 'echarts/echarts'
- }
- });
- // 使用
- require(
- [
- 'echarts',
- 'echarts/chart/bar' // 使用柱状图就加载bar模块,按需加载
- ],
- drewEcharts
- );
- function drewEcharts(ec) {
- console.log("1");
- // 基于准备好的dom,初始化echarts图表
- myChart = ec.init(document.getElementById('main'));
- console.log("2");
- var option = {
- tooltip: {
- show: true
- },
- legend: {
- data:['销量']
- },
- xAxis : [
- {
- type : 'category',
- }
- ],
- yAxis : [
- {
- type : 'value'
- }
- ],
- series : [
- {
- "name":"销量",
- "type":"bar",
- }
- ]
- };
//加载数据- loadDATA(option);
- // 为echarts对象加载数据
- myChart.setOption(option);
- }
- function loadDATA(option){
- $.ajax({
- type : "post",
- async : false, //同步执行
- url : "bar.do",
- data : {},
- dataType : "json", //返回数据形式为json
- success : function(result) {
- if (result) {
//初始化option.xAxis[0]中的data- option.xAxis[0].data=[];
- for(var i=0;i<result.length;i++){
- option.xAxis[0].data.push(result[i].name);
- }
//初始化option.series[0]中的data- option.series[0].data=[];
- for(var i=0;i<result.length;i++){
- option.series[0].data.push(result[i].num);
- }
- }
- }
- });
- }
- </script>
- </body>
3.在前一步中AJAX的POST请求的路径是 url : "bar.do" 在web.xml中配置以下映射如下图:
- <servlet>
- <servlet-name>helloBar</servlet-name>
- <servlet-class>com.helloBar</servlet-class>
- </servlet>
- <servlet-mapping>
- <servlet-name>helloBar</servlet-name>
- <url-pattern>/bar.do</url-pattern>
- </servlet-mapping>
这样,通过bar.do就会找到com这个包下面的helloBar这个servlet.这个servlet的主要作用是向数据库读取数据并返回给前段页面,这里我用的是局部数据源去链接,关于局部数据源怎么连这里我就不讲述了,不会的同学可以在我的博客中找到。当然也可以使用最基本的JDBC去连接。
- public void doPost(HttpServletRequest request, HttpServletResponse response)
- throws ServletException, IOException {
//创建了一个bardao的对象,barDAO主要是对数据库的连接和对数据库的操作- barDAO bardao=new barDAO();
//调用bardao的select_all()方法把从数据库中读取所有的数据返回的是一个ArrayList,ArrayList里面放的是一个barBean- ArrayList<barBean> array = bardao.select_all();
//设置返回时的编码格式- response.setContentType("text/html; charset=utf-8");
//调用JSONArray.fromObject方法把array中的对象转化为JSON格式的数组- JSONArray json=JSONArray.fromObject(array);
- System.out.println(json.toString());
//返回给前段页面- PrintWriter out = response.getWriter();
- out.println(json);
- out.flush();
- out.close();
}
数据库的bar表格式如下图:
barBean的代码:
- import java.io.Serializable;
- import java.sql.Date;
- public class barBean {
- private String name;
- private int 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;
- }
- }
barDAO的代码:
- public class barDAO {
- private static InitialContext context = null;
- private DataSource dataSource = null;
- private static final String SELECT_ALL = "SELECT*FROM bar ";
- public barDAO(){
- try{
- if(context == null){
- context = new InitialContext();
- }
- dataSource = (DataSource)context.lookup("java:comp/env/jdbc/sampleDS");
- }catch(NamingException e2){
- }
- }
- public Connection getConnection(){
- Connection conn = null;
- try{
- conn = dataSource.getConnection();
- }catch(SQLException e){}
- return conn;
- }
- public ArrayList<barBean> select_all()
- {
- Connection conn = null;
- PreparedStatement pstmt = null;
- ResultSet rst = null;
- try{
- conn = dataSource.getConnection();
- pstmt = conn.prepareStatement(SELECT_ALL);
- rst = pstmt.executeQuery();
- ArrayList<barBean> array = new ArrayList<barBean>();
- while(rst.next())
- {
- barBean bar = new barBean();
- bar.setName(rst.getString("name"));
- bar.setNum(rst.getInt("num"));
- array.add(bar);
- }
- pstmt.close();
- rst.close();
- return array;
- }catch(SQLException e){
- System.out.println("Error occured at barDAO->select_all()");
- return new ArrayList<barBean>();
- }finally{
- try{
- conn.close();
- }catch(SQLException e){
- System.out.println("Error occured at closing connection in barDAO");
- }
- }
- }
- }
4.前段的页面在确认ajax请求success以后,读取返回后的数组的内容。就可以显示了。
echarts通过ajax向服务器发送post请求,servlet从数据库读取数据并返回前端的更多相关文章
- 【03】AJAX 向服务器发送请求
AJAX 向服务器发送请求 创建 XMLHttpRequest 对象后,就可以向服务器发送请求了. XMLHttpRequest 对象的 open() 方法和 send() 方法用来向服务器发送请 ...
- AJAX - 向服务器发送请求请求
AJAX - 向服务器发送请求请求 XMLHttpRequest 对象用于和服务器交换数据.直线电机生产厂家 向服务器发送请求 如需将请求发送到服务器,我们使用 XMLHttpRequest 对象的 ...
- nodejs向远程服务器发送post请求----融云Web SDK/客户端获取token
最近要用到一个叫融云的及时通讯的SDK,在获取token这个步骤的时候有点卡顿,以防以后碰到类似的问题,再此记录一下. 客户端通过融云 SDK 每次连接服务器时,都需要向服务器提供 Token,以便验 ...
- AJAX向服务器发送请求
使用 XMLHttpRequest 对象的 open() 和 send() 方法: 方法 描述 open(method,url,async) 规定请求的类型.URL 以及是否异步处理请求. metho ...
- Android 给服务器发送网络请求
今天听得有点蒙,因为服务器的问题,这边建立服务器的话,学长用的是Idea建立的Spring之类的方法去搞服务器. 然后就是用Android去给这个服务器发送请求,大致效果还是懂的,就是像网站发送请求, ...
- 向服务器发送post请求
/** * 通过HttpClient发送Post请求 * @param path 请求路径 * @param params 请求参数 * @param encoding 编码 * @return 请求 ...
- andlua,andlua发送http请求,并解析json数据
andlua发送http请求,并解析json实例 import'cjson'import 'http'--导入cjson库url = 'https://www.baidu,com'--设置urlHtt ...
- Springmvc中 同步/异步请求参数的传递以及数据的返回
转载:http://blog.csdn.net/qh_java/article/details/44802287 注意: 这里的返回就是返回到jsp页面 **** controller接收前台数据的方 ...
- springmvc中同步/异步请求参数的传递以及数据的返回
注意: 这里的返回就是返回到jsp页面 **** controller接收前台数据的方式,以及将处理后的model 传向前台***** 1.前台传递数据的接受:传的属性名和javabean的属性相同 ...
随机推荐
- Linux上修改weblogic的内存大小
我们经常在使用WebLoigc部署应用程序后,发现程序运行速度并不是很快,遇到这种情况我们可以尝试调整启动时分配的内存,设置方法有两种: 一.在../domain/setDomainEnv.sh文件中 ...
- Nodejs_day01
helloworld.txt的内容: 我是nodejs 阻塞式调用 var fs = require('fs'); var data = fs.readFileSync('helloworld.txt ...
- 《Windows程序设计第5版》学习进度备忘
书签:另外跳过的内容有待跟进 __________________学习资源: <Windows程序设计第5版珍藏版> __________________知识基础支持: _________ ...
- bzoj 3757 苹果树(树上莫队算法)
[题意] 有若干个询问,询问路径u,v上的颜色总数,另外有要求a,b,意为将a颜色看作b颜色. [思路] vfk真是神系列233. Quote: 用S(v, u)代表 v到u的路径上的结点的集合. 用 ...
- Camel In Action 阅读笔记 第一章 认识Camel 1.1 Camel 介绍
1.1 Camel 介绍 Camel 是一个为了您的项目集成变得高效有趣的集成框架,Camel 项目在2007年初开始的,相对来说它还比较年轻,但它已然是一个非常成熟的开源项目,它所使用的是Apach ...
- NSRangeFromString 测试
官网文档 Returns a range from a textual representation. Declaration SWIFT func NSRangeFromString(_ aStri ...
- HBase高性能复杂条件查询引擎---二级多列索引
http://www.infoq.com/cn/articles/hbase-second-index-engine 原理 “二级多列索引”是针对目标记录的某个或某些列建立的“键-值”数据,以列的值为 ...
- Hadoop中的辅助类ToolRunner和Configured的用法详解
在开始学习hadoop时,最痛苦的一件事就是难以理解所写程序的执行过程,让我们先来看这个实例,这个测试类ToolRunnerTest继承Configured的基础上实现了Tool接口,下面对其用到的基 ...
- 【原创】MapReduce编程系列之二元排序
普通排序实现 普通排序的实现利用了按姓名的排序,调用了默认的对key的HashPartition函数来实现数据的分组.partition操作之后写入磁盘时会对数据进行排序操作(对一个分区内的数据作排序 ...
- C++11 语法记录
转自:http://blog.csdn.net/crayondeng/article/details/18563121 一.Lambda表达式 C++ 11中的Lambda表达式用于定义并创建匿名的函 ...