Javaweb:jsp利用ECharts代码导出数据库数据,使其以柱状图表形式可视化(IDEA+Tomcat9.0.4+Mysql数据库)
数据可视化,ECharts提供了很好的资源,ECharts 是一个使用 JavaScript 实现的开源可视化库,涵盖各行业图表,满足各种需求。ECharts 遵循 Apache-2.0 开源协议,免费商用。ECharts 兼容当前绝大部分浏览器(IE8/9/10/11,Chrome,Firefox,Safari等)及兼容多种设备,可随时随地任性展示。本文所用到的echarts代码地址:https
数据可视化,ECharts提供了很好的资源,ECharts 是一个使用 JavaScript 实现的开源可视化库,涵盖各行业图表,满足各种需求。
ECharts 遵循 Apache-2.0 开源协议,免费商用。
ECharts 兼容当前绝大部分浏览器(IE8/9/10/11,Chrome,Firefox,Safari等)及兼容多种设备,可随时随地任性展示。
本文所用到的echarts代码地址:https://echarts.apache.org/examples/zh/editor.html?c=bar-background
运行结果如图:
这里要导入的包,除了正常运行tomcat项目的包之外还有echarts官方的js包:echarts.min.js
这里建了一张表saleslip(money,cname,cnum)为了便于操作我向其中加入了这些数据:
下面写一个saleslipDao.java,调用函数操作数据库,saleslipDao代码这里只有OutsaleslipsInfo()函数在本文中是有用的
saleslipDao:
package dao;
import java.sql.*;
public class saleslipDao {
String DRIVER_NAME = "com.mysql.cj.jdbc.Driver";
final String URL = "jdbc:mysql://localhost:3306/ClothesM7";//url地址,
// 可以在Drive and Data Source里面查看自己的数据库的地址
final String USER_NAME = "root";
//密码
final String PASSWORD = "Wzy768291";//我设置的密码
//插入数据
public void insertslipInfo(String cname,String cnum,String money){
try{
Class.forName(DRIVER_NAME);
Connection conn = DriverManager.getConnection(URL, USER_NAME, PASSWORD);
String sql="insert into ClothesM7.saleslip(money, cname, cnum) values(?,?,?)";
//插入记录的sql语句
PreparedStatement pstmt = conn.prepareStatement(sql);//创建PreparedStatement对象
pstmt.setString(1,money);//将字符cname存储到pstmt对象中
pstmt.setString(2,cname);//将字符cnum存储到pstmt对象中
pstmt.setString(3,cnum);//将字符money存储到pstmt对象中
pstmt.execute();//patmt将记录插入到数据库中
}
catch (SQLException | ClassNotFoundException e){
System.out.println("出现SQLException异常");//如果重复上传同一张,即数据库中保存的有的话,会抛出异常,并不再添加
}
}
public ResultSet OutsaleslipsInfo() {
try {
Class.forName(DRIVER_NAME);
Connection conn = DriverManager.getConnection(URL, USER_NAME, PASSWORD);
String sql = "select cname,sum(cnum) as num,sum(money) as cvalue from saleslip group by cname";
try {
Statement stmt = conn.createStatement();
return stmt.executeQuery(sql);
} catch (SQLException throwables) {
throwables.printStackTrace();
}
} catch (ClassNotFoundException | SQLException e) {
e.printStackTrace();
}
return null;
}
}
新建了一个jsp文件来显示我们的图表
adm.jsp:
<%--
Created by IntelliJ IDEA.
User: wangzeyi
Date: 2020/12/30
Time: 下午1:52
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ page import="dao.saleslipDao" %>
<%@ page import="java.sql.ResultSet" %>
<%@ page import="java.util.ArrayList" %>
<%@ page import="java.util.List" %>
<html>
<head>
<title>Title</title>
<!--导入echarts的js包-->
<script src="echarts.min.js"></script>
</head>
<body bgcolor="#f5f5dc">
<div style="position:relative;left: 10px;width: 300px"><p style="font-family: 微软雅黑;font-size: 20px;color:orange">当前服装销售量:</p></div>
<div id="main" style="width: 60%; height: 500px;"></div>
<div style="position:relative;left: 10px;width: 300px;"><p style="font-family: 微软雅黑;font-size: 20px;color:orange">当前服装销售额:</p></div>
<div id="main2" style="width: 60%; height: 500px;"></div>
<%
List<String> list1 = new ArrayList<String>();
List<String> list2 = new ArrayList<String>();
List<String> list3 = new ArrayList<String>();
//利用dao包
saleslipDao newsale = new saleslipDao();
try{
//调用OutsaleslipsInfo(),返回数据,这里我返会的根据服装名称分组,返回每个服装销售金额跟销售总数
ResultSet rs = newsale.OutsaleslipsInfo();
while (rs.next()){
String cname = rs.getString("cname");//获取服装名称
String cnum = rs.getString("num");//获取服装数量
String cmoney = rs.getString("cvalue");//获取服装价格
list1.add(cname);//循环加入list
list2.add(cnum);
list3.add(cmoney);
}
} catch (Exception e) {
e.printStackTrace();
}
%>
</body>
</html>
<script type="text/javascript">
var abra = new Array();//定义空数组,便于将list转换为数组
var abrb = new Array();
var abrc = new Array();
<%
if(list1!=null){//将list1服装转换为服装数组
for(int j=0;j<list1.size();j++)
{
%>
//alert("111");
abra[<%=j%>] = '<%=list1.get(j)%>';
<%}
}%>
<%
if(list2!=null){//将list2数量转换为服装数量数组
for(int j=0;j<list2.size();j++)
{
%>
//alert("111");
abrb[<%=j%>] = '<%=list2.get(j)%>';
<%}
}%>
<%
if(list3!=null){//将list3金额转换为金额数组
for(int j=0;j<list3.size();j++)
{
%>
//alert("111");
abrc[<%=j%>] = '<%=list3.get(j)%>';
<%}
}%>
var mychart = echarts.init(document.getElementById("main"));//第一个图表
var mychart2 = echarts.init(document.getElementById("main2"));//第二个图表
//echarts复制的
var option1 = {
xAxis: {
type: 'category',
data:abra//改成我的服装名称数组
},
yAxis: {
type: 'value'
},
series: [{
data: abrb,//改成销售服装数量数组
type: 'bar',
showBackground: true,
backgroundStyle: {
color: 'rgba(135, 206, 235, 0.8)'
}
}]
};
var option2 = {
xAxis: {
type: 'category',
data:abra//改成我的服装名称数组
},
yAxis: {
type: 'value'
},
series: [{
data: abrc,//改成服装金额数组
type: 'bar',
showBackground: true,
backgroundStyle: {
color: 'rgba(135, 206, 235, 0.8)'
}
}]
};
mychart.setOption(option1);//执行
mychart2.setOption(option2);//执行
</script>
之后运行adm.jsp即可显示我们的数据图表。
更多推荐
所有评论(0)