如何把数据库中的数据显示到页面
Posted 二哈喇子!
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何把数据库中的数据显示到页面相关的知识,希望对你有一定的参考价值。
主要内容:使用JDBC访问数据库中数据(Java Web数据可视化案例)
文章目录
前期准备:
安装 JDK、mysql、Tomcat 和 Eclipse的 Java Web 版本;
①、Eclipse需要Web版本JAVA环境变量配置步骤及测试(JDK的下载 & 安装 & 环境配置教程)(右上角其实也可以更改)
确认Eclipse的版本:
②、此内容涉及数据库,如果没有数据库点此链接下载
③、Tomcat是必须安装并配置的,否则不能运行,Tomcat下载安装以及配置(详细教程)
案例:
第一步:创建数据库及数据
首先需要创建数据库和表使用MySQL创建数据库和表更多学习,也可以看下面的语句
用命令行方式创建新冠病毒数据库在
首先【Win+R】打开cmd,或者在MySQL安装的位置,打开 bin 文件夹输入cmd回车
然后输入:mysql -u root -p
,再输入密码即可
①、创建数据库:create database practice2020;
②、使用数据库:use practice2020
③、创建表:
create table ncov2020(
id int primary key auto_increment,
quantity int,
editdate datatime
);
④、为了方便在界面上展示效果在这插入语句:
insert into ncov2020 values(null,77,'2020-1-20');
insert into ncov2020 values(null,149,'2020-1-21');
insert into ncov2020 values(null,131,'2020-1-22');
insert into ncov2020 values(null,259,'2020-1-23');
insert into ncov2020 values(null,444,'2020-1-24');
insert into ncov2020 values(null,688,'2020-1-25');
insert into ncov2020 values(null,769,'2020-1-26');
insert into ncov2020 values(null,1771,'2020-1-27');
insert into ncov2020 values(null,1459,'2020-1-28');
insert into ncov2020 values(null,1736,'2020-1-29');
insert into ncov2020 values(null,1979,'2020-1-30');
insert into ncov2020 values(null,2101,'2020-1-31');
insert into ncov2020 values(null,2586,'2020-2-1');
最后practice2020这个数据库里的ncov2020表的数据:
接下来我们要编写代码来表示数据库里的数据
第二步:编写实体类
(1)、类名
(2)、成员变量,和表中的列对应
(3)、访问器方法,setter方法和getter方法
(4)、无参数构造方法
(5)、有参数的构造方法,有多少个成员,就给多少个参数
通常与数据库中的表结构一致。
package bean;
public class StudentQuantity
private int id;
int year;
int quantity;
// 如果要提供有参数的构造方法,通常需要把无参数的构造方法写出来,方法体可以为空
public StudentQuantity()
/*
* 分别为3个成员变量赋值
*/
public StudentQuantity(int id,int year,int quantity)
this.id = id;
this.year = year;
this.quantity = quantity;
public void setId(int id)
this.id = id;
public int getId()
return id;
public int getYear()
return year;
public void setYear(int year)
this.year = year;
public int getQuantity()
return quantity;
public void setQuantity(int quantity)
this.quantity = quantity;
第三步:编写Dao类
访问数据库,取出数据库数据
// 得到所有数据
public List<StudentQuantity> list()
// (1)定义存储数据的容器
List<StudentQuantity> datas = new ArrayList<>();
// (2)把相关对象定义成成员变量
// (3)try...catch...finally
try
// (6)写sql语句
String sqlString = "select * from studentquantity order by year";
// (7)连接到数据库
Class.forName(driverName);
con = DriverManager.getConnection(url,username,password);
// (8)执行sql语句,会得到结果集
pstmt = con.prepareStatement(sqlString);
ResultSet rSet = pstmt.executeQuery(sqlString);
// (9)遍历结果集,next指向下一行,并返回true,
// 如果没有下一行了,返回false,循环结束
while(rSet.next())
// (10)取出当前行的各个列
int id = rSet.getInt(1);
int year = rSet.getInt(2);
int quantity = rSet.getInt(3);
// (11)转换成对象(封装成),调用多个参数的构造方法
StudentQuantity studentQuantity = new StudentQuantity(id, year, quantity);
// (12)把当前对象添加到集合中(容器中)
datas.add(studentQuantity);
catch (Exception e)
// (4)处理异常
//System.out.println(e.getMessage());
e.printStackTrace();
finally
// (5)释放资源
if(rs!=null)
try
rs.close();
catch (Exception e2)
if(pstmt!=null)
try
pstmt.close();
catch (Exception e2)
if(con!=null)
try
con.close();
catch (Exception e2)
// (13)把表示所有对象的数据返回
return datas;
这里如果说你换了个项目,那么有些参数你是需要改的:
// (1)定义存储数据的容器
List<StudentQuantity> datas = new ArrayList<>();
// (6)写sql语句
String sqlString = "select * from studentquantity order by year";
// (10)取出当前行的各个列
int id = rSet.getInt(1);
int year = rSet.getInt(2);
int quantity = rSet.getInt(3);
// (11)转换成对象(封装成),调用多个参数的构造方法
StudentQuantity studentQuantity = new StudentQuantity(id, year, quantity);
第四步:编写Servlet代码
进行业务处理,如果没有业务,只是把Dao里面的数据直接返回给Controller
package servlet;
import java.io.IOException;
import java.util.List;
import javax.servlet.RequestDispatcher;
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 bean.StudentQuantity;
import service.StudentQuantityService;
// (1)关联到FindAll地址
@WebServlet("/FindAll")
public class FindAllServlet extends HttpServlet
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
// (2)前两行调用servcie或者DAO得到数据
//StudentQuantityService service = new StudentQuantityService();
//List<StudentQuantity> datas = service.list();
StudentQuantityDao dao = new StudentQuantityDao();
List<StudentQuantity> datas = dao.list();
// (3)传值到界面,第一个参数是名字,第二个参数是具体值
request.setAttribute("datas", datas);
// (4)跳转到界面,list.jsp是显示数据的界面,list.jsp可以继续访问request
RequestDispatcher rd = request.getRequestDispatcher("list.jsp");
rd.forward(request, response);
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
// TODO Auto-generated method stub
doGet(request, response);
第五步:画页面
编写html文件或JSP、Vue文件都可以,只要是前端的
这里用的是JSP
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>数据列表</title>
</head>
<body>
<table>
<tr>
<th>编号</th>
<th>年度</th>
<th>人数</th>
</tr>
<!-- request.setAttribute("datas",datas); -->
<!-- datas表示所有数据,data表示其中的一个数据 -->
<c:forEach var="data" items="$datas">
<tr>
<td>$data.id</td>
<td>$data.year</td>
<td>$data.quantity</td>
</tr>
</c:forEach>
</table>
</body>
</html>
练习:
要求:使用Java Web技术把数据库中数据分析的结果展示到网页上,分析结果是关于全国学历教育入学数education,具体包括年份、本科入学人数、高中入学人数和初中入学人数。具体要求如下:
①、写出创建数据库表education并插入模拟数据的SQL语句。
②、编写表示信息的实体类 EducationBean,应该包括成员变量、访问器方法和构造方法。
③、编写 EducationDao类,连接到数据库,执行查询,封装查询结果。
④、编写EducationServlet类,关联到请求/list 上,调用EducationDao得到数据并存储到request对象中,然后转向 list.jsp
⑤、编写 list.jsp,使用JSTL把查询的结果显示在网页上。
第一步:创建数据库及数据
①、写出创建数据库test,表education并插入模拟数据的SQL语句
首先创建数据库:create database test;
然后使用数据库:use test
然后创建表:
create table education(
year int primary key,
benke int,
gaozhong int,
chuzhong int
);
然后插入一些模拟数据并查看:
插入数据:
insert into education values(2018,3000,4000,5000);
insert into education values(2019,3300,4400,5200);
insert into education values(2020,3400,4500,5300);
insert into education values(2021,3500,4600,5500);
查看数据: select * from education;
第二步:编写实体类
②、编写表示信息的实体类 EducationBean,应该包括成员变量、访问器方法(set、get)和构造方法
打开Java编译工具,这里用的是Eclipse
选择【File】→【new】→【Project】
接着选择【web】→【Dynamic Web Project】
然后起个名字直接点完成
接下来创建实体类bean
在src上点击右键,new→package
输入名字bean
然后创建类EducationBean
在bean上点右键,new→class
输入名字EducationBean
接下来编写代码(跟数据库对应):
package bean;
public class EducationBean
//成员变量
private int year;
private int benke;
private int gaozhong;
private int chuzhong;
然后生成访问器方法(set、get)和构造方法
生成set、get方法动图演示:
生成构造方法动图演示:
最后EducationBean 里面完整代码:
package bean;
public class EducationBean
//成员变量
private int year;
private int benke;
private int gaozhong;
private int chuzhong;
//生成set、get方法
public int getYear()
return year;
public void setYear(int year)
this.year = year;
public int getBenke()
return benke;
public void setBenke(int benke)
this.benke = benke;
public int getGaozhong()
return gaozhong;
public void setGaozhong(int gaozhong)
this.gaozhong = gaozhong;
public int getChuzhong()
return chuzhong;
public void setChuzhong(int chuzhong)
this.chuzhong = chuzhong;
//生成构造方法
public EducationBean(int year, int benke, int gaozhong, int chuzhong)
super();
this.year = year;
this.benke = benke;
this.gaozhong = gaozhong;
this.chuzhong = chuzhong;
第三步:编写Dao类
③、编写 EducationDao类,连接到数据库,执行查询,封装查询结果
把驱动程序放到工程里面的lib文件夹,跟着自己的mysql版本走(百度自行搜索jar包下载)
要在上方加上mysql连接的代码
private String url = "jdbc:mysql://localhost:3306/test?useSSL=false";
// 数据库信息,旧版本中不用useSSL=false
private String username = "root";
private String password = "123456";
private String driverName = "com.mysql.jdbc.Driver";
private Connection con=null; //连接对象
private PreparedStatement pstmt = null; //语句对象
private ResultSet rs = null; //结果集对象
接下来跟着上方案例的第三步来写,中间的一些参数要改
要改的地方:
数据库名字、数据库字段、用户名、密码、实体类名字、当前行的各个列、构造方法中的参数
package dao;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;
import bean.EducationBean;
public class EducationDao
private String url = "jdbc:mysql://localhost:3306/test?useSSL=false";
// 数据库信息,旧版本中不用useSSL=false
private String username = "root";
private String password = "123456";
private String driverName = "com.mysql.jdbc.Driver";
private Connection con=null; //连接对象
private PreparedStatement pstmt = null; //语句对象
private ResultSet rs = null; //结果集对象
// 得到所有数据
public List<EducationBean> list()
// (1)定义存储数据的容器
List<EducationBean> datas = new ArrayList<>();
// (2)把相关对象定义成成员变量
// (3)try...catch...finally
try
// (6)写sql语句
String sqlString = "select * from education order by year";
// (7)连接到数据库
Class.forName(driverName);
con = DriverManager.getConnection(url,username,password);
// (8)执行sql语句,会得到结果集
pstmt = con.prepareStatement(sqlString);
ResultSet rSet = pstmt.executeQuery(sqlString);
// (9)遍历结果集,next指向下一行,并返回true,
// 如果没有下一行了,返回false,循环结束
while(rSet.next())
// (10)取出当前行的各个列
int year = rSet.getInt(1);
int benke = rSet.getInt(2);
int gaozhong = rSet.getInt(3);
int chuzhong = rSet.getInt(4);
// (11)转换成对象(封装成),调用多个参数的构造方法
EducationBean educationBean = new EducationBean(year, benke,gaozhong,chuzhong);
// (12)把当前对象添加到集合中(容器中)
datas.add(educationBean);
catch (Exception e)
// (4)处理异常
//System.out.println(e.getMessage());Ssm框架下怎么把数据库数据动态显示到前端页面?
Ssm框架下怎么把数据库数据动态显示到前端页面?滥竽充数的不要回答!基于ssm框架开发的项目,前端有一张表,后台有很多数据,我要把这些数据都查阅出来显示到这张表中,我应该怎么做?页面该用静态页面还是动态的?是怎么做到我想查哪条数据它就显示哪条数据到页面的?不会的别误导人!
1、首先通过代码获取到数据里的数据,$result = $this->service->getListData(); 这个方法就是获取数据库的数据的。
2、获取到数据后,就可以在html代码里输出这些数据了,直接在html里嵌入一些php标签就行了,由于数据是一个数组,所以可以循环这个数组来输出。
3、把数据显示在table上,数组里每一条数据都显示一行tr。
4、表格的第一个单元格我们显示数据的id。
5、同样表格的第二个单元格显示数据的name。如果还有其他的数据要显示,再添加td来显示就行了。
6、运行页面,现在就可以看到页面显示出了后台数据库获取到的数据了。
参考技术A
总结一下你的问题,可以分为以下几点。
1、怎么使数据库中的数据动态的在前端显示?
可以通过ajax的局部刷新来实现前端页面的动态变化显示,比如选择不同的条件,页面相应的显示不同的结果。
2、怎么查询数据库?
因为你使用了ssm框架,所以你可以使用mybatis的mapper功能来进行查询,而在Mapper里面写好正确的SQL查询语句就可以了,对于多个数据库中的表显示在前端一个表格里面的情况,可以通过表连接查询,或者表之间的关系(比如一对多、一对一、多对多)来实现,查询结果选取前端需要显示的列即可,这部分是数据库上的知识。
3、页面用静态页面还是动态页面?
静态页面(比如html)或者动态页面(比如jsp)都是可以的,如果用的ajax访问,两者区别可以忽略。
4、想查哪条数据就显示哪条数据是怎么做到的?
不知道你有没有学过数据库,如果学过的话,应该知道数据库中通过SQL的条件查询可以过滤掉不需要的数据,这样子就可以根据查询的条件来获取自己想要显示在页面的数据,然后显示出来就可以了。
上面的东西,至少需要一个基本的了解,不然估计也看不懂我描述的是什么,如果看不懂的话,建议还是先学习一下下面列举的这些东西的基础知识再看:
Spring、Spring MVC、MyBatis、SQL、ajax、jQuery、json。
本回答被提问者采纳
以上是关于如何把数据库中的数据显示到页面的主要内容,如果未能解决你的问题,请参考以下文章
如何把前端数据传到后端,然后把后端传出的数据显示到HTML上
java里怎么把从数据库里读取的图片类型数据 显示到页面上啊 ?
把excel导入服务器后台页面显示,java怎么写啊,求答案,最后的效果是下图这样。
前端,Javascript中dataTable中,如何获取datatable中的columns的各项key:value值