JSP連接MySQL數(shù)據(jù)庫詳細(xì)步驟
動態(tài)Web程序運(yùn)行在Web容器之中,利用Web容器可以使用JDBC技術(shù)來實(shí)現(xiàn)數(shù)據(jù)庫數(shù)據(jù)的CRUD操作,將數(shù)據(jù)表中的數(shù)據(jù)取出并結(jié)合JSP動態(tài)生成HTML頁面進(jìn)行顯示。

JSP中的MySQL驅(qū)動程序配置
本文開發(fā)使用的是MySQL數(shù)據(jù)庫,如果要想使用MySQL數(shù)據(jù)庫,則一定要在Tomcat中進(jìn)行MySQL驅(qū)動程序的配置。這個(gè)配置可以考慮將獲取到的MySQL的程序包 jar包 保存到你本地的Tomcat文件夾中的 lib 文件目錄中。

在Tomcat或者是項(xiàng)目之中所有的XML文件配置之后必須重新啟動Tomcat才可以實(shí)現(xiàn)新的配置項(xiàng)加載,如果要在Tomcat中增加新的程序包,也必須重新啟動后才能加載。
注意:
你可以下載官網(wǎng)提供的 jar 包:
MySQL 5 版本:mysql-connector-java-5.1.0-bin.jar
MySQL 8 版本:mysql-connector-java-8.0.19.jar
下載后把 mysql-connector-java-<對應(yīng)版本>-bin.jar 拷貝到 tomcat 下 lib 目錄。
MySQL 8.0 以上版本的數(shù)據(jù)庫連接有所不同:
- com.mysql.jdbc.Driver 更換為 com.mysql.cj.jdbc.Driver。
- MySQL 8.0 以上版本不需要建立 SSL 連接的,需要顯示關(guān)閉。
- 最后還需要設(shè)置 CST。
MySQL中創(chuàng)建表
既然要進(jìn)行數(shù)據(jù)的開發(fā)操作,則首先一定要進(jìn)行數(shù)據(jù)庫的創(chuàng)建,本次創(chuàng)建一張手機(jī)信息表,并且配置好相應(yīng)的測試數(shù)據(jù)。
范例:創(chuàng)建手機(jī)信息表
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 )
插入一些數(shù)據(jù):
INSERT INTO phone VALUES(1001,'華為','P30','2018-10-10',3500,'白色','HB1214512412'); INSERT INTO phone VALUES(1002,'小米','10Plus','2020-02-02',3222,'藍(lán)色','XM5765424335'); INSERT INTO phone VALUES(1003,'榮耀','30Pro','2020-08-22',2888,'白色','RY4815645687');
數(shù)據(jù)表顯示如下:

JSP中SELECT操作
如果要想使用JDBC實(shí)現(xiàn)數(shù)據(jù)表中的數(shù)據(jù)查詢,那么肯定要通過PreparedStatement接口實(shí)現(xiàn)查詢操作,本次僅僅是實(shí)現(xiàn)查詢?nèi)繑?shù)據(jù)的需要。
范例:查詢數(shù)據(jù)表所有數(shù)據(jù)
<%@ page contentType="text/html;charset=UTF-8" language="java" %> <%-- 定義頁面中文顯示編碼 --%>
<%@ page import="java.sql.*" %> <%-- 導(dǎo)入開發(fā)包 --%>
<html>
<head>
<title>$Title$</title>
</head>
<body>
<%!
public static final String DBDRIVER="com.mysql.jdbc.Driver";//驅(qū)動程序
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);//加載驅(qū)動程序
Connection conn=DriverManager.getConnection(DBURL,USER,PASSWORD);//連接數(shù)據(jù)庫
PreparedStatement pstmt=conn.prepareStatement(sql);//操作PreparedStatement對象
ResultSet rs=pstmt.executeQuery();//執(zhí)行查詢,并存入ResultSet結(jié)果集中
%>
<table border="1" width="100%">
<thead><tr><td>編號</td><td>品牌</td><td>型號</td><td>出廠日期</td><td>價(jià)格</td><td>顏色</td><td>手機(jī)編碼</td></tr></thead>
<tbody>
<%
while (rs.next()){//從ResultSet結(jié)果集中循環(huán)獲取數(shù)據(jù)
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>
<%
//關(guān)閉連接,如果不關(guān)閉就再也關(guān)閉不了,除非重新啟動Tomcat
conn.close();
%>
</body>
</html>本程序在JSP中實(shí)現(xiàn)了MySQL數(shù)據(jù)庫的鏈接,隨后利用PreparedStatement語句實(shí)現(xiàn)了 phone 表的查詢,所有查詢的記錄將利用循環(huán)拼湊為HTML表格元素進(jìn)行展示。
執(zhí)行結(jié)果顯示如下:

實(shí)際上看到以上程序代碼執(zhí)行后,就可以非常清楚的發(fā)現(xiàn),整個(gè)JavaWEB開發(fā)和Java的開發(fā)基本上是沒有啥太大去別的,都是編寫Java代碼,只要你Java基本功扎實(shí),那么這種程序?qū)嶋H上編寫起來就非常容易了。
JavaBean 定義與使用
為了提高Java程序代碼的可重用性,往往會將一些重復(fù)執(zhí)行的代碼封裝在類結(jié)構(gòu)之中,而這樣的類也被稱為JavaBean。在IDEA中的Web開發(fā)中,創(chuàng)建此封裝類的位置結(jié)構(gòu)圖如下:

第一步:創(chuàng)建db.properties文件
driver=com.mysql.jdbc.Driver url=jdbc:mysql://127.0.0.1:3306/java221804 username=root password=huanghuang
第二步:創(chuàng)建數(shù)據(jù)庫封裝類——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、注冊驅(qū)動
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調(diào)用JavaBean數(shù)據(jù)庫操作封裝類
范例:
<%@ page contentType="text/html;charset=UTF-8" language="java" %> <%-- 定義頁面中文顯示編碼 --%>
<%@ page import="java.sql.*" %> <%-- 導(dǎo)入開發(fā)包 --%>
<%@ page import="cn.lqgx.insert.DBUtils" %> <%-- 導(dǎo)入自定義的JavaBean數(shù)據(jù)庫操作封裝類 --%>
<html>
<head>
<title>$Title$</title>
</head>
<body>
<%
String sql = "select * from phone;";//SQL查詢語句
Connection conn = DBUtils.getConnection();//連接數(shù)據(jù)庫
PreparedStatement pstmt1 = conn.prepareStatement(sql);//操作PreparedStatement對象
ResultSet rs = pstmt1.executeQuery();//執(zhí)行查詢,并存入ResultSet結(jié)果集中
%>
<table border="1" width="100%">
<thead>
<tr>
<td>編號</td>
<td>品牌</td>
<td>型號</td>
<td>出廠日期</td>
<td>價(jià)格</td>
<td>顏色</td>
<td>手機(jī)編碼</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>
<%
//關(guān)閉連接,如果不關(guān)閉就再也關(guān)閉不了,除非重新啟動Tomcat
conn.close();
%>
</body>
</html>
程序執(zhí)行結(jié)果如下:

本程序直接通過開發(fā)的DBUTils工具類獲取了數(shù)據(jù)庫的連接對象,這樣就相當(dāng)于將所有的數(shù)據(jù)庫連接與關(guān)閉處理封裝在了一個(gè)JavaBean中,以實(shí)現(xiàn)代碼的可重用性,在調(diào)用時(shí)只需要通過page指令導(dǎo)入相關(guān)的程序類即可實(shí)現(xiàn)類中方法的調(diào)用。
到此這篇關(guān)于JSP連接MySQL數(shù)據(jù)庫詳細(xì)步驟的文章就介紹到這了,更多相關(guān)JSP連接MySQL數(shù)據(jù)庫內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
MySQL通過binlog實(shí)現(xiàn)恢復(fù)數(shù)據(jù)
在MySQL中,如果不小心刪除了數(shù)據(jù),可以利用二進(jìn)制日志(binlog)來恢復(fù)數(shù)據(jù),本文將通過幾個(gè)示例為大家介紹一下具體實(shí)現(xiàn)方法,希望對大家有所幫助2025-01-01
MySQL 自動備份與數(shù)據(jù)庫被破壞后的恢復(fù)方法
當(dāng)數(shù)據(jù)庫服務(wù)器建立好以后,我們首先要做的不是考慮要在這個(gè)支持?jǐn)?shù)據(jù)庫的服務(wù)器運(yùn)行哪些受MySQL提攜的程序,而是當(dāng)數(shù)據(jù)庫遭到破壞后,怎樣安然恢復(fù)到最后一次正常的狀態(tài),使得數(shù)據(jù)的損失達(dá)到最小。2010-03-03
MySQL 配置優(yōu)化(多個(gè)參數(shù))
安裝MySQL后,配置文件my.cnf在 /MySQL安裝目錄/share/mysql目錄中,該目錄中還包含多個(gè)配置文件可供參考,有my-large.cnf ,my-huge.cnf, my-medium.cnf,my-small.cnf,分別對應(yīng)大中小型數(shù)據(jù)庫應(yīng)用的配置。win環(huán)境下即存在于MySQL安裝目錄中的.ini文件2016-05-05


