核心思想
在JSP中连接数据库,最佳实践是使用 MVC(Model-View-Controller)设计模式。

- Model (模型): JavaBean,负责封装数据。
- View (视图): JSP页面,负责显示数据。
- Controller (控制器): Servlet,负责接收用户请求,调用模型处理,并选择合适的视图进行响应。
对于初学者,我们通常会先看一个简单的 JSP + JavaBean + JDBC 的例子,然后再过渡到更规范的Servlet + JSP + JDBC模式。
第一步:环境准备
在开始之前,请确保你已经安装并配置好了以下软件:
- JDK (Java Development Kit): Java开发工具包,推荐JDK 8或更高版本。
- Web服务器: 如 Apache Tomcat,这是最常用的JSP/Servlet容器,你需要配置好Tomcat的环境变量。
- IDE (集成开发环境): Eclipse IDE for Enterprise Java and Web Developers 或 IntelliJ IDEA (Ultimate版),它们对Web开发支持非常好,本教程以Eclipse为例。
- MySQL数据库: 安装并启动了MySQL服务,并创建一个用于测试的数据库和表。
- 数据库驱动包: 连接MySQL的Java驱动程序,即
mysql-connector-java.jar文件,你可以从 Maven中央仓库 下载。
第二步:创建项目并配置环境
在Eclipse中创建一个Dynamic Web Project
- 打开Eclipse,点击
File->New->Dynamic Web Project。 - 输入项目名称(
JSPMySQLDemo)。 - 选择Target runtime为你之前配置好的Tomcat服务器。
- 点击
Finish。
添加MySQL驱动包
- 从网上下载
mysql-connector-java-x.x.xx.jar文件。 - 在Eclipse的Project Explorer中,右键你的项目 ->
Build Path->Configure Build Path。 - 在
Libraries标签页,点击Add External JARs...。 - 选择你下载的MySQL驱动包,点击
OK。 - 你的项目就可以使用MySQL的驱动了。
创建数据库和表
打开你的MySQL客户端(如Navicat, MySQL Workbench, 或命令行),执行以下SQL语句:
-- 创建一个名为 testdb 的数据库
CREATE DATABASE IF NOT EXISTS testdb;
-- 使用这个数据库
USE testdb;
-- 创建一个用户表
CREATE TABLE IF NOT EXISTS users (
id INT PRIMARY KEY AUTO_INCREMENT,
username VARCHAR(50) NOT NULL,
password VARCHAR(50) NOT NULL
);
-- 插入一些测试数据
INSERT INTO users (username, password) VALUES ('admin', '123456');
INSERT INTO users (username, password) VALUES ('user1', 'password1');
第三步:编写代码(JSP + JavaBean + JDBC 模式)
我们将创建三个文件:一个JavaBean来处理数据,一个JSP页面来显示数据。

创建JavaBean (Model)
JavaBean是一个遵循特定规范的Java类,通常用于封装数据。
在 src 目录下,创建一个包 com.example.model,然后在包中创建一个 User.java 文件。
User.java
package com.example.model;
// 这是一个标准的JavaBean,用于封装用户数据
public class User {
private int id;
private String username;
private String password;
// 必须有一个无参的构造函数
public User() {
}
// getter 和 setter 方法
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
创建数据库连接工具类 (DBUtil)
为了方便复用,我们创建一个专门用来获取数据库连接的工具类。

在 src 目录下,创建一个包 com.example.util,然后在包中创建一个 DBUtil.java 文件。
DBUtil.java
package com.example.util;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
public class DBUtil {
// 数据库连接信息
private static final String URL = "jdbc:mysql://localhost:3306/testdb?useSSL=false&serverTimezone=UTC";
private static final String USER = "root"; // 你的MySQL用户名
private static final String PASSWORD = "your_password"; // 你的MySQL密码
// 获取数据库连接
public static Connection getConnection() {
Connection conn = null;
try {
// 1. 加载驱动
Class.forName("com.mysql.cj.jdbc.Driver");
// 2. 获取连接
conn = DriverManager.getConnection(URL, USER, PASSWORD);
} catch (ClassNotFoundException | SQLException e) {
e.printStackTrace();
}
return conn;
}
// 关闭连接
public static void closeConnection(Connection conn) {
if (conn != null) {
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
注意: 请将 USER 和 PASSWORD 修改为你自己的MySQL账户信息。
创建JSP页面来显示数据 (View)
在 WebContent 目录下,创建一个 listUsers.jsp 文件。
listUsers.jsp
<%@ page import="java.sql.*, com.example.model.*, com.example.util.*" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>用户列表</title>
<style>
table { width: 50%; border-collapse: collapse; }
th, td { border: 1px solid #dddddd; text-align: left; padding: 8px; }
th { background-color: #f2f2f2; }
</style>
</head>
<body>
<h1>用户列表</h1>
<table>
<tr>
<th>ID</th>
<th>用户名</th>
<th>密码</th>
</tr>
<%
Connection conn = null;
PreparedStatement pstmt = null;
ResultSet rs = null;
try {
// 1. 获取数据库连接
conn = DBUtil.getConnection();
// 2. 准备SQL语句
String sql = "SELECT * FROM users";
pstmt = conn.prepareStatement(sql);
// 3. 执行查询
rs = pstmt.executeQuery();
// 4. 遍历结果集并显示在JSP中
while (rs.next()) {
int id = rs.getInt("id");
String username = rs.getString("username");
String password = rs.getString("password");
// 使用HTML表格行显示数据
%>
<tr>
<td><%= id %></td>
<td><%= username %></td>
<td><%= password %></td>
</tr>
<%
}
} catch (Exception e) {
e.printStackTrace();
out.println("数据库操作出错: " + e.getMessage());
} finally {
// 5. 关闭资源
if (rs != null) rs.close();
if (pstmt != null) pstmt.close();
if (conn != null) DBUtil.closeConnection(conn);
}
%>
</table>
</body>
</html>
第四步:运行和测试
- 在Eclipse中,右键点击
listUsers.jsp文件 ->Run As->Run on Server。 - 选择你配置好的Tomcat服务器,点击
Finish。 - 浏览器会自动打开,并显示
http://localhost:8080/JSPMySQLDemo/listUsers.jsp。 - 如果一切配置正确,你应该能看到一个表格,里面显示了你在MySQL中插入的两条用户数据。
推荐的视频教程
视频教程能更直观地展示操作过程,强烈推荐以下资源:
Bilibili (B站) - 推荐首选
B站是国内最好的免费学习平台之一,有大量优秀的中文教程。
-
【尚硅谷】JSP从入门到精通:这是一套非常经典的JSP全套教程,其中必然包含JSP连接数据库的章节,讲解非常细致,适合零基础学员。
- 搜索关键词:
尚硅谷 JSP - 特点: 系统性强,从HTML/CSS/JS讲到JSP/Servlet,再到框架,非常全面。
- 搜索关键词:
-
【狂神说Java】JSP快速入门:狂神老师的风格风趣幽默,节奏明快,适合有一定Java基础想快速上手Web开发的学员。
- 搜索关键词:
狂神说 JSP - 特点: 节奏快,干货多,能快速让你建立Web开发的整体概念。
- 搜索关键词:
-
【黑马程序员】JavaWeb教程:黑马程序员也是培训界的翘楚,他们的教程非常注重实战和细节。
- 搜索关键词:
黑马程序员 JavaWeb - 特点: 项目驱动式教学,让你在做项目的过程中学习知识点。
- 搜索关键词:
YouTube
如果你习惯英文学习,YouTube上有海量高质量教程。
-
freeCodeCamp.org: 他们有非常长的 "Java Web Development Full Course" 视频系列,涵盖了从基础到高级的几乎所有内容,包括JSP和数据库连接。
- 搜索关键词:
Java Web Development Full Course - 特点: 免费、全面、英文讲解。
- 搜索关键词:
-
Programming with Mosh: Mosh的教程以清晰、易懂著称,虽然他主要做前端和C#,但他的Java基础和编程思想教程非常值得一看。
- 搜索关键词:
Mosh Java - 特点: 讲解逻辑清晰,能帮你打好编程基础。
- 搜索关键词:
其他平台
- 慕课网 (imooc): 国内老牌的IT学习平台,有大量实战课程,搜索 "JSP+MySQL" 可以找到很多针对性的小项目课程。
- Udemy: 国外最大的在线课程平台,经常有打折活动,可以搜索 "JSP Servlet MySQL" 找到评价很高的付费课程。
总结与建议
- 先看视频,再动手实践: 视频能让你快速了解流程和操作细节,但一定要跟着自己动手敲一遍代码,才能加深理解。
- 理解MVC模式: 不要只停留在会写
<% ... %>脚本片段,要理解为什么要把Java代码(逻辑)和HTML代码(表现)分开,这是从新手到进阶的关键一步。 - 学习现代框架: JSP+Servlet是学习JavaWeb的基础,但在实际工业界,现在更多地使用 Spring Boot + MyBatis/JPA 这样的框架,它们极大地简化了数据库操作和Web开发,当你掌握了基础后,下一步就应该学习Spring Boot了。
希望这份详细的指南和视频推荐能帮助你成功掌握JSP连接MySQL数据库!
