如何把数据库中的数据显示到页面

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值

java 调用cxfWebService 接口返回类型是xml格式数据显示在jsp页面中该如何做到

如何根据后端数据的换行标记在前端页面显示换行