ECharts连接数据库的具体实现
相关描述
我们由之前的实例可以得知,要是不连接数据库的话,只是需要套用一下ECharts的相关模板即可,这部分内容我在前几篇中已经叙述过了;
现在,我们需要实现的是,将数据库里面的数据导入到web网页中,但是不是单纯地数据显示,而是要利用ECharts实现数据库数据的可视化。
经过查阅相关资料可知,需要用到ajax的相关技术知识。
具体实现
在这里需要用到这两个坐标:
<!-- https://mvnrepository.com/artifact/io.leopard.boot/leopard-boot-requestmapping -->
<dependency>
<groupId>io.leopard.boot</groupId>
<artifactId>leopard-boot-requestmapping</artifactId>
<version>0.9.20</version>
</dependency>
<!-- https://mvnrepository.com/artifact/io.leopard.boot/leopard-boot-responsebody -->
<dependency>
<groupId>io.leopard.boot</groupId>
<artifactId>leopard-boot-responsebody</artifactId>
<version>0.9.20</version>
</dependency>
我发现,连接数据库的操作还是跟以前一样,就连servlet的代码都是差不多一样的,主要区别就在于前端代码有了echarts页面模块的加入,其余的也是之前都涉及到过的;
//DBUtil.java
package org.example.Connect;
import javax.servlet.jsp.jstl.sql.Result;
import java.sql.*;
public class DBUtil {
public static String db_url="jdbc:mysql://localhost:3306/aa?useSSL=false";
public static String db_user="root";
public static String db_password="20214063";
public static Connection getConn() {
Connection conn=null;
try {
Class.forName("com.mysql.cj.jdbc.Driver");
conn= DriverManager.getConnection(db_url,db_user,db_password);
} catch (ClassNotFoundException | SQLException e) {
e.printStackTrace();
}
return conn;
}
public static void close(Statement stmt, Connection conn){
if(stmt!=null){
try {
stmt.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if(conn!=null){
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
public static void close(ResultSet rs, Statement stmt, Connection conn){
if(rs!=null){
try {
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if(stmt!=null){
try {
stmt.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if(conn!=null){
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
public void close(PreparedStatement psmt,Connection conn){
if(psmt!=null){
try {
psmt.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if(conn!=null){
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
public void close(ResultSet rs,PreparedStatement psmt,Connection conn){
if(rs!=null){
try {
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if(psmt!=null){
try {
psmt.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if(conn!=null){
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
//chartDao.java
package org.example.Dao;
import com.alibaba.fastjson.JSONArray;
import org.example.Connect.DBUtil;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import org.example.Bean.ec;
public class chartDao {
public List<ec> search(){
String sql="select * from ec";
List<ec> list=new ArrayList<>();
Connection conn=DBUtil.getConn();
Statement stmt=null;
ResultSet rs=null;
try {
stmt=conn.createStatement();
rs=stmt.executeQuery(sql);
ec e=null;
while(rs.next()){
String name=rs.getString("name");
int count=Integer.parseInt(rs.getString("count"));
System.out.println(name);
System.out.println(count);//成功导出数据
e=new ec(name,count);
list.add(e);
System.out.println(list);//成功进入到list集合里面
}
} catch (SQLException e) {
e.printStackTrace();
}finally{
DBUtil.close(rs,stmt,conn);
}
return list;
}
}
//chartServlet.java
package org.example.Servlet;
import org.example.Dao.chartDao;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.util.List;
import org.example.Bean.ec;
@WebServlet("/chartServlet")
public class chartServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
chartDao cd=new chartDao();
protected void service(HttpServletRequest req,HttpServletResponse resp) throws IOException, ServletException {
req.setCharacterEncoding("utf-8");
resp.setContentType("text/html;charset=utf-8");
String method=req.getParameter("method");
if("search".equals(method)){
search(req,resp);
}
}
private void search(HttpServletRequest req,HttpServletResponse resp) throws IOException, ServletException {
req.setCharacterEncoding("utf-8");
resp.setContentType("text/html;charset=utf-8");
List<ec> list=cd.search();
System.out.println(list);
req.setAttribute("list",list);//成功,问题出在chart1.jsp页面里面
req.getRequestDispatcher("chart1.jsp").forward(req,resp);
}
}
//chart1.jsp
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%--
Created by IntelliJ IDEA.
User: 12140
Date: 2023/2/21
Time: 23:31
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<script src="lib/echarts.min.js"></script>
<script src="https://code.jquery.com/jquery-3.3.1.min.js"></script>
<title>浏览界面</title>
</head>
<body>
<%--<%--%>
<%-- Object message=request.getAttribute("message");--%>
<%-- if(message!=null&&!"".equals(message)){--%>
<%-- %>--%>
<%--<script type="text/javascript">--%>
<%-- alert(<%=request.getAttribute("message")%>);--%>
<%--</script>--%>
<%--<%}%>--%>
<div align="center">
<table border="1">
<tr>
<th>地区名称</th>
<th>地区人数</th>
</tr>
<c:forEach items="${list}" var="l">
<tr>
<td>${l.name}</td>
<td>${l.count}</td>
</tr>
</c:forEach>
</table>
</div>
<%--以下内容--图--不显示--%>
<div id="main" style="width:400px;height:400px;"></div>
<script type="text/javascript">
var myCharts=echarts.init(document.getElementById("main"));
var array=new Array();
var index=0;
<c:forEach items="${list}" var="l">
array[index++]=${l.count};
</c:forEach>
//指定表
var option={
title:{
text:"地区人数图"
},
tooltip:{
show:true
},
legend:{
data:['各地区人数']
},
xAxis:[
{
type:'category',
data:[
<c:forEach items="${list}" var="l">
["${l.name}"],
</c:forEach>
]
}
],
yAxis:[
{
type:'value'
}
],
series:[
{
name:'count',
type:'bar',
data:array
}
]
};
myCharts.setOption(option);
</script>
</body>
</html>
//chart2.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>查询界面</title>
</head>
<body>
<form action="chartServlet?method=search" method="post">
<center>
<table border="1">
<tr>
<td>请输入你想要查询的地区:</td>
<td><input type="text" name="whe"></td>
</tr>
<tr>
<td colspan="2" align="center"><input type="submit" value="查询"></td>
</tr>
</table>
</center>
</form>
</body>
</html>
其中,chart2的jsp页面就是一个凑一下数的,本来是为了让这个功能更加完整一些的,但是加上它并没有什么用,但是也不想删除了,其逻辑思路也可以运用到增删改查里面去,也就放在这里起到提供一种逻辑思路的作用啦!
注意啦!在写ECharts的图表时,一定不要多啥少啥,不然真的出不来
就像这里:

那个逗号,别少啦!!!!!!!!!!!!
结果呈现:

当然,以上数据切勿当真!
ECharts连接数据库的具体实现的更多相关文章
- 使用Echarts实现动态曲线图表
最近做的一个在线气象观测网站要实现一个需求:使用图表展示最近五天温湿度等气象要素的曲线变化 具体效果参考:http://www.weatherobserve.com/showInfoIndex.jsp ...
- ECharts使用记
系统开发厂商一直都使用基于Flash的图表解决方案,例如Fushioncharts.本人也曾略做研究,当时对js不熟,只能采用静态xml方式,颇为繁琐. 自从了解了html5的新特性,意识到基于Can ...
- python requests抓取NBA球员数据,pandas进行数据分析,echarts进行可视化 (前言)
python requests抓取NBA球员数据,pandas进行数据分析,echarts进行可视化 (前言) 感觉要总结总结了,希望这次能写个系列文章分享分享心得,和大神们交流交流,提升提升. 因为 ...
- ECharts, PHP, MySQL, Ajax, JQuery 实现前后端数据可视化
ECharts 下载js代码 工作原理浅析 在项目中引入ECharts 后台处理 数据库端MySQL PHP端 JQuery Ajax处理 ECharts 端处理 前端全部代码 演示结果 总结 最近要 ...
- [Web][高中同学毕业分布去向网站+服务器上挂载]二、敲定思路与方向(HTML5+JS(JQuery+ECharts))
高中同学毕业分布网站:敲定思路 一.背景 第一集:http://www.cnblogs.com/Twobox/p/8368121.html 中大体确定了自己的 大体目标.大体思路. 但是 . 在今天的 ...
- 【转】Echarts的使用以及动态加载数据
一.Echarts的介绍 ECharts开源来自百度商业前端数据可视化团队,基于html5 Canvas,是一个纯Javascript图表库,提供直观,生动,可交互,可个性化定制的数据可视化图表.创新 ...
- 利用Ajax实现数据的同步传输,从mysql中提取数据,通过echarts可视化
如何将mysql数据库中的方式通过echarts可视化呢,以下面这个简单的例子向大家进行演示: 步骤一:mysql的创表和插入数据,当然这些数据也可以是你通过爬虫抓取的. 步骤二: 创 ...
- C#曲线分析平台的制作(三,三层构架+echarts显示)
本文依据CSDN另一位网友关于三层构架的简单搭建,基于他的源码进行修改.实现了三层构架合理结构,以及从数据库中传递数值在echarts显示的实验目的. 废话不多说,show me codes: 具体构 ...
- 一起来玩echarts系列(一)------箱线图的分析与绘制
一.箱线图 Box-plot 箱线图一般被用作显示数据分散情况.具体是计算一组数据的中位数.25%分位数.75%分位数.上边界.下边界,来将数据从大到小排列,直观展示数据整体的分布情况. 大部分正常数 ...
- Webstorm+Webpack+echarts构建个性化定制的数据可视化图表&&两个echarts详细教程(柱状图,南丁格尔图)
Webstorm+Webpack+echarts ECharts 特性介绍 ECharts,一个纯 Javascript 的图表库,可以流畅的运行在 PC 和移动设备上,兼容当前绝大部分浏览器(I ...
随机推荐
- TypeScript 元组
TypeScript 元组 我们知道数组中元素的数据类型都一般是相同的(any[] 类型的数组可以不同),如果存储的元素数据类型不同,则需要使用元组. 元组中允许存储不同类型的元素,元组可以作为参数传 ...
- layui弹出层layer点击关闭还会显示在html中
我的弹出层是这样定义的: 它的属性为display:none <div id="divlayer" style="display:none"> &l ...
- How to Check and Repair EXT4 Filesystem in Linux
The fsck (stands for File System Consistency Check) is used to check and repair one or more Linux fi ...
- [485] C2 Age Of Splendor Update 1 OpCodez
[485] C2 Age Of Splendor Update 1 Client 00 SendProtocolVersion 01 MoveBackwardToLocation 02 Say 03 ...
- C# 屏蔽词过滤
参考:https://www.cnblogs.com/kubidemanong/p/10834993.html public class TreeNode { public char Char; pu ...
- 关于html中元素和布局的笔记
一.元素类型 css标准文档流:默认的网页从左到右,从上到下的排列方式显示出网页效果 类型: 1.块级元素:(div,p,table--) a.独占一行 b.可以设置宽度和高度 c.可以设置左右居中( ...
- Linux文本文件及处理工具
Linux中的文本信息 文本文件 C语言,Java语言等编程文件的源程序语言 文本格式的数据文件 文本格式的文字信息 在Linux下一切皆文件 everything is file,包括目录也是文件的 ...
- postgresql--column must appear in the group by clause or be used in an aggregate function
我想得到大于男女平均年龄的人 原表: 在gauss200下执行以下语句: SELECT stname,age,gender,AVG(age) FROM att_test01 GROUP BY gend ...
- C#——》创建Windows服务,发布并调试Windows服务
一,创建一个windows服务项目. 二,双击Service1.cs进入设计界面,在空白处右键单击选择添加安装程序,如下图所示. 三,添加安装程序后,会进入如下图界面,生成两个组件:serviceP ...
- 作业三:CART回归树算法
作业三:CART回归树算法 班级:20大数据(3)班 学号:201613341 题目一 表1为拖欠贷款人员训练样本数据集,使用CART算法基于该表数据构造决策树模型,并使用表2中测试样本集确定剪枝后的 ...