JSP连接MySQL数据库详细步骤
作者:Java?Fans 发布时间:2024-01-25 07:03:49
动态Web程序运行在Web容器之中,利用Web容器可以使用JDBC技术来实现数据库数据的CRUD操作,将数据表中的数据取出并结合JSP动态生成HTML页面进行显示。
JSP中的MySQL驱动程序配置
本文开发使用的是MySQL数据库,如果要想使用MySQL数据库,则一定要在Tomcat中进行MySQL驱动程序的配置。这个配置可以考虑将获取到的MySQL的程序包 jar包 保存到你本地的Tomcat文件夹中的 lib 文件目录中。
在Tomcat或者是项目之中所有的XML文件配置之后必须重新启动Tomcat才可以实现新的配置项加载,如果要在Tomcat中增加新的程序包,也必须重新启动后才能加载。
注意: 
你可以下载官网提供的 jar 包:
MySQL 5 版本:mysql-connector-java-5.1.0-bin.jar
MySQL 8 版本:mysql-connector-java-8.0.19.jar
 下载后把 mysql-connector-java-<对应版本>-bin.jar 拷贝到 tomcat 下 lib 目录。
MySQL 8.0 以上版本的数据库连接有所不同:
com.mysql.jdbc.Driver 更换为 com.mysql.cj.jdbc.Driver。
MySQL 8.0 以上版本不需要建立 SSL 连接的,需要显示关闭。
最后还需要设置 CST。
MySQL中创建表
既然要进行数据的开发操作,则首先一定要进行数据库的创建,本次创建一张手机信息表,并且配置好相应的测试数据。
范例:创建手机信息表
CREATE TABLE phone(
`pid` INT(11) NOT NULL PRIMARY KEY AUTO_INCREMENT,
`brand` VARCHAR(20) NOT NULL,
`type` VARCHAR(20) NOT NULL,
`birthday` DATE NOT NULL,
`price` DOUBLE NOT NULL,
`color` VARCHAR(20) NOT NULL,
`card` VARCHAR(20) NOT NULL UNIQUE
)
插入一些数据:
INSERT INTO phone VALUES(1001,'华为','P30','2018-10-10',3500,'白色','HB1214512412');
INSERT INTO phone VALUES(1002,'小米','10Plus','2020-02-02',3222,'蓝色','XM5765424335');
INSERT INTO phone VALUES(1003,'荣耀','30Pro','2020-08-22',2888,'白色','RY4815645687');
数据表显示如下:
JSP中SELECT操作
如果要想使用JDBC实现数据表中的数据查询,那么肯定要通过PreparedStatement接口实现查询操作,本次仅仅是实现查询全部数据的需要。
范例:查询数据表所有数据
<%@ page contentType="text/html;charset=UTF-8" language="java" %> <%-- 定义页面中文显示编码 --%>
<%@ page import="java.sql.*" %> <%-- 导入开发包 --%>
<html>
<head>
<title>$Title$</title>
</head>
<body>
<%!
public static final String DBDRIVER="com.mysql.jdbc.Driver";//驱动程序
public static final String DBURL="jdbc:mysql://localhost:3306/java221804";//连接地址
public static final String USER="root";//用户名
public static final String PASSWORD="huanghuang";//密码
%>
<%
String sql="select * from phone;";//SQL查询语句
Class.forName(DBDRIVER);//加载驱动程序
Connection conn=DriverManager.getConnection(DBURL,USER,PASSWORD);//连接数据库
PreparedStatement pstmt=conn.prepareStatement(sql);//操作PreparedStatement对象
ResultSet rs=pstmt.executeQuery();//执行查询,并存入ResultSet结果集中
%>
<table border="1" width="100%">
<thead><tr><td>编号</td><td>品牌</td><td>型号</td><td>出厂日期</td><td>价格</td><td>颜色</td><td>手机编码</td></tr></thead>
<tbody>
<%
while (rs.next()){//从ResultSet结果集中循环获取数据
int pid=rs.getInt(1);
String brand=rs.getString(2);
String type=rs.getString(3);
Date birthday=rs.getDate(4);
double price=rs.getDouble(5);
String color=rs.getString(6);
String card=rs.getString(7);
%>
<tr>
<td><%=pid%></td>
<td><%=brand%></td>
<td><%=type%></td>
<td><%=birthday%></td>
<td><%=price%></td>
<td><%=color%></td>
<td><%=card%></td>
</tr>
<%
}
%>
</tbody>
</table>
<%
//关闭连接,如果不关闭就再也关闭不了,除非重新启动Tomcat
conn.close();
%>
</body>
</html>
本程序在JSP中实现了MySQL数据库的链接,随后利用PreparedStatement语句实现了 phone 表的查询,所有查询的记录将利用循环拼凑为HTML表格元素进行展示。
执行结果显示如下:
实际上看到以上程序代码执行后,就可以非常清楚的发现,整个JavaWEB开发和Java的开发基本上是没有啥太大去别的,都是编写Java代码,只要你Java基本功扎实,那么这种程序实际上编写起来就非常容易了。
JavaBean 定义与使用
为了提高Java程序代码的可重用性,往往会将一些重复执行的代码封装在类结构之中,而这样的类也被称为JavaBean。在IDEA中的Web开发中,创建此封装类的位置结构图如下:
第一步:创建db.properties文件
driver=com.mysql.jdbc.Driver
url=jdbc:mysql://127.0.0.1:3306/java221804
username=root
password=huanghuang
第二步:创建数据库封装类——DBUtils类
package cn.lqgx.insert;
import java.io.IOException;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Properties;
public class DBUtils {
private static final Properties PROPERTIES =new Properties();
static{
InputStream is = DBUtils.class.getResourceAsStream("/db.properties");
try {
PROPERTIES.load(is);
//1、注册驱动
Class.forName(PROPERTIES.getProperty("driver"));
} catch (IOException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
// 2、获取连接方法
public static Connection getConnection(){
Connection connection = null;
//2、获取连接对象
try {
connection=DriverManager.getConnection(PROPERTIES.getProperty("url"), PROPERTIES.getProperty("username"), PROPERTIES.getProperty("password"));
} catch (SQLException e) {
e.printStackTrace();
}
return connection;
}
// 3、释放资源方法
public static void closeAll(ResultSet resultSet, Statement statement,
Connection connection) {
try {
if (resultSet != null) {
resultSet.close();
}
if(statement!=null){
statement.close();
}
if(connection!=null){
connection.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
最后通过JSP调用JavaBean数据库操作封装类
范例:
<%@ page contentType="text/html;charset=UTF-8" language="java" %> <%-- 定义页面中文显示编码 --%>
<%@ page import="java.sql.*" %> <%-- 导入开发包 --%>
<%@ page import="cn.lqgx.insert.DBUtils" %> <%-- 导入自定义的JavaBean数据库操作封装类 --%>
<html>
<head>
<title>$Title$</title>
</head>
<body>
<%
String sql = "select * from phone;";//SQL查询语句
Connection conn = DBUtils.getConnection();//连接数据库
PreparedStatement pstmt1 = conn.prepareStatement(sql);//操作PreparedStatement对象
ResultSet rs = pstmt1.executeQuery();//执行查询,并存入ResultSet结果集中
%>
<table border="1" width="100%">
<thead>
<tr>
<td>编号</td>
<td>品牌</td>
<td>型号</td>
<td>出厂日期</td>
<td>价格</td>
<td>颜色</td>
<td>手机编码</td>
</tr>
</thead>
<tbody>
<%
int pid = rs.getInt(1);
String brand = rs.getString(2);
String type = rs.getString(3);
Date birthday = rs.getDate(4);
double price = rs.getDouble(5);
String color = rs.getString(6);
String card = rs.getString(7);
%>
<tr>
<td><%=pid%>
</td>
<td><%=brand%>
</td>
<td><%=type%>
</td>
<td><%=birthday%>
</td>
<td><%=price%>
</td>
<td><%=color%>
</td>
<td><%=card%>
</td>
</tr>
<%
}
%>
</tbody>
</table>
<%
//关闭连接,如果不关闭就再也关闭不了,除非重新启动Tomcat
conn.close();
%>
</body>
</html>
程序执行结果如下:
本程序直接通过开发的DBUTils工具类获取了数据库的连接对象,这样就相当于将所有的数据库连接与关闭处理封装在了一个JavaBean中,以实现代码的可重用性,在调用时只需要通过page指令导入相关的程序类即可实现类中方法的调用。
来源:https://blog.csdn.net/hh867308122/article/details/128198052


猜你喜欢
- 注:此功能依赖GD2图形库最近要用php生成缩略图,在网上找了一下,发现了这篇文章:PHP生成图片缩略图试用了一下后,发现有这样几个问题:1
- Python 提供了多个图形开发界面的库,几个常用 Python GUI 库如下:Tkinter: Tkinter 模块(Tk 接口)是 P
- 当我们去设计数据库表结构,对操作数据库时(尤其是查表时的SQL语句),我们都需要注意数据操作的性能。这里,我们不会讲过多的SQL语句的优化,
- 代码如下:< % '功能:显示数据库中表名、字段名、字段内容 '原创:wangsdong
- 1.3 安装 ASP.net跟基督山一起检查你们的计算机哦CPU Pentium II 450以上,推荐733内存 256M 推荐 512M
- 汇总整理一套Python网页爬虫,文本处理,科学计算,机器学习和数据挖掘的兵器谱。1. Python网页爬虫工具集一个真实的项目,一定是从获
- 文章介绍OpenCV 库中包含很多运算函数,这里着重介绍按位运算的基本原理并举例说明。本篇文章中主要涉及到的函数有:按位与:bitwise_
- 前言很多人会使用postman工具,或者熟悉python,但不一定会使用python来编写测试用例脚本,postman里面可以完整的将pyt
- java.util.regex类支持用正则表达式来匹配和提取字符串,读者可以去官网查看java.util.regex的详细使用方法。首先给出
- 前言大家好,我是苏凉,在前面我们已经学习了网络爬虫并且获取到了数据,接下来当然是对数据进行分析啦,本篇文章带大家进入新的模块:pyhon数据
- REST framework定义的异常APIException 所有异常的父类ParseError 解析错误AuthenticationFa
- 但凡设计师都对简洁的设计情有独钟,我们不喜欢复杂,却也不能不会rich。先来看下“rich”在字典里的意思:(1) having an ab
- element upload上传带参数<el-button style="margin-left: 10px;"
- Python中的内建函数和可迭代对象,迭代器求值标识id() #标识id 返回对象的唯一标识,CPython返回内存地址hash() #哈希
- 照例使用XMLhttp同步方式获取数据,可是由于网络不稳定,经常造成'死锁'状况,既send之后一直不返回服务器结果,也不出
- 函数:原型每一个构造函数都有一个属性叫做原型(prototype,下面都不再翻译,使用其原文)。这个属性非常有用:为一个特定类声明通用的变量
- 下面给大家分享python 字符串string的内置方法,具体内容详情如下所示:#__author: "Pizer Wang&qu
- 有关pygal的安装,大家可以参阅《pip和pygal的安装实例教程》。直方图:直方图是一个特殊的条,它可以取3个数值:纵坐标高度,横坐标开
- 目录一、scrapy 分析1. 解析函数或数据入库出错,不会重试,会造成一定的数据丢失2. 运行方式,需借助命令行,不方便调试3. 入库 p
- 本文实例讲述了Python实现的txt文件去重功能。分享给大家供大家参考,具体如下:# -*- coding:utf-8 -*-#! pyt