Javaweb学习——day6(JDBC入门 CRUD)
文章目录
- 一、今天的学习内容总结
- 1. JDBC基础概念
- 2. 数据库连接与操作流程
- 3. 基本CRUD操作
- 4. 项目结构规范
- 二、目前项目结构与文件功能说明
- 三、实现今日功能(JDBC + CRUD)详细步骤
- 1. 添加数据库依赖(MySQL示例)
- 2. 创建数据库表
- 4. UserService 增删改查核心代码
- 5. 编写对应 Servlet 实现“新增用户”功能
- 6. JSP表单举例
- 7. 新建register_success.jsp
- 8. 运行图例:
一、今天的学习内容总结
1. JDBC基础概念
- JDBC(Java Database Connectivity)是 Java 提供的访问数据库的标准 API。
- 主要包括加载数据库驱动、建立连接、发送SQL语句、处理结果、关闭连接等步骤。
2. 数据库连接与操作流程
- 通过 JDBC 连接数据库(通常是 MySQL、Oracle、SQLServer 等)。
- 主要用到 Connection、Statement、PreparedStatement、ResultSet 等核心类。
3. 基本CRUD操作
- CRUD 是指数据库的增(Create)、删(Delete)、改(Update)、查(Read)四种基本操作。
- 用 SQL 语句分别实现数据的插入、删除、修改和查询。
4. 项目结构规范
- 遵循 MVC(Model-View-Controller)结构进行项目开发。
- controller:处理请求(如 LoginServlet)。
- model:处理业务逻辑(如 UserService),后续可添加 DAO 层操作数据库。
- webapp:存放 JSP 页面(如 login.jsp、success.jsp、fail.jsp)。
二、目前项目结构与文件功能说明
- LoginServlet.java(控制器):处理登录表单请求,调用 UserService 进行验证,判断跳转成功/失败页面,或后续实现数据库交互。
- UserService.java(业务层):目前模拟账号密码校验和 Cookie 相关操作,后续可在这里添加数据库 CRUD 方法。
- JSP 文件(视图层):如 login.jsp 负责展示登录页面,success.jsp 展示成功页面等。
- web.xml:已配置默认首页为 login.jspweb。
三、实现今日功能(JDBC + CRUD)详细步骤
下面以“用户信息的增删改查(CRUD)”为例,给出典型实现流程(假设操作 users 表,字段如 id, username, password)。
首先需要idea连接数据库,mysql安装配置教程可以看此教程
连接数据库可以看此教程
连接好后如图:
1. 添加数据库依赖(MySQL示例)
<!-- 在 pom.xml 文件添加 MySQL 依赖 -->
<dependency><groupId>mysql</groupId><artifactId>mysql-connector-j</artifactId><version>8.0.33</version>
</dependency>
图例:
2. 创建数据库表
CREATE TABLE users (id INT PRIMARY KEY AUTO_INCREMENT,username VARCHAR(50) NOT NULL,password VARCHAR(50) NOT NULL
);
图例:
## 3. 编写 JDBC 工具类(推荐复用)
// com.example.util.JDBCUtils
public class JDBCUtils {private static final String URL = "jdbc:mysql://localhost:3306/yourdb?useSSL=false&serverTimezone=UTC";private static final String USER = "root";private static final String PASSWORD = "yourpassword";static {try {Class.forName("com.mysql.cj.jdbc.Driver");} catch (ClassNotFoundException e) {e.printStackTrace();}}public static Connection getConnection() throws SQLException {return DriverManager.getConnection(URL, USER, PASSWORD);}
}
图例:
4. UserService 增删改查核心代码
package com.example.model;import com.example.util.JDBCUtils;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;public class UserService {/*** 登录校验:根据用户名和密码查数据库,存在即返回true,否则返回false*/public boolean checkLogin(String username, String password) {String sql = "SELECT * FROM users WHERE username = ? AND password = ?";try (Connection conn = JDBCUtils.getConnection();PreparedStatement pstmt = conn.prepareStatement(sql)) {pstmt.setString(1, username);pstmt.setString(2, password);ResultSet rs = pstmt.executeQuery();return rs.next(); // 查到就返回true} catch (Exception e) {e.printStackTrace();}return false;}/*** 新增用户(注册功能)*/public boolean addUser(String username, String password) {String sql = "INSERT INTO users(username, password) VALUES (?, ?)";try (Connection conn = JDBCUtils.getConnection();PreparedStatement pstmt = conn.prepareStatement(sql)) {pstmt.setString(1, username);pstmt.setString(2, password);return pstmt.executeUpdate() > 0;} catch (Exception e) {e.printStackTrace();}return false;}
}
5. 编写对应 Servlet 实现“新增用户”功能
package com.example.controller;import com.example.model.UserService;import jakarta.servlet.ServletException;
import jakarta.servlet.annotation.WebServlet;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import java.io.IOException;@WebServlet("/register")
public class RegisterServlet extends HttpServlet {private UserService userService = new UserService();@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {// 获取表单参数String username = req.getParameter("username");String password = req.getParameter("password");// 调用UserService新增用户boolean success = userService.addUser(username, password);// 根据结果跳转到不同页面if (success) {resp.sendRedirect("success.jsp");} else {resp.sendRedirect("fail.jsp");}}
}
- 上面用到了前面给你的 UserService 类的 addUser 方法。
- @WebServlet(“/register”) 表示这个Servlet映射在 /register 路径,等会表单的 action 就写 register。
6. JSP表单举例
<%@ page contentType="text/html;charset=UTF-8" %>
<html>
<head><title>用户注册</title>
</head>
<body><h2>注册新用户</h2><form action="register" method="post">用户名:<input type="text" name="username" required><br>密码:<input type="password" name="password" required><br><input type="submit" value="注册"></form>
</body>
</html>
7. 新建register_success.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head><title>注册成功</title><!-- 3秒后自动跳转到登录页 --><meta http-equiv="refresh" content="3;url=login.jsp">
</head>
<body><h2>注册成功,请返回登录!</h2><a href="login.jsp">点此立即返回登录页</a><p>3秒后会自动跳转...</p>
</body>
</html>
8. 运行图例:
使用数据库中未存在用户登陆:
显示登陆失败:
我们先对用户进行注册:
注册成功返回登录页:
此时再登陆显示登陆成功:
此时再查看数据库已添加进了相应用户信息: