当前位置: 首页 > news >正文

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. 运行图例:

使用数据库中未存在用户登陆:
在这里插入图片描述
显示登陆失败:
在这里插入图片描述
我们先对用户进行注册:

在这里插入图片描述
注册成功返回登录页:
在这里插入图片描述
此时再登陆显示登陆成功:
在这里插入图片描述
此时再查看数据库已添加进了相应用户信息:
在这里插入图片描述

相关文章:

  • 【Unity】MiniGame编辑器小游戏(三)马赛克【Mosaic】
  • EPOLL相关接口和原理
  • CppCon 2016 学习:BUILDING A MODERN C++ FORGE FOR COMPUTE AND GRAPHICS
  • 如何将数据从安卓设备传输到 iPhone | 综合指南
  • 【QT】QT项目修改QT设计师界面类类名和文件名的方法
  • 408第二季 - 组成原理 - 数据类型转换
  • 在linux上用nginx配置ssl应该怎么操作?下面是示例
  • Python实现企业微信Token自动获取到SQLite存储
  • 微服务拆分 SpringCloud
  • 渲染学进阶——机械动力的渲染(3)
  • 对微服务的了解
  • 准确识别检索头,提高大模型长上下文能力
  • MyBatis与JPA有哪些不同?
  • 【MATLAB去噪算法】基于VMD联合小波阈值去噪算法(第六期)
  • CNN卷积神经网络实战(1)
  • 执行 PGPT_PROFILES=ollama make run下面报错,
  • 记录:安装VMware、Ubuntu、ROS2
  • Android实例项目【智能家居系统】实现数据库登录注册+动画效果+网页跳转+短信发送!!!
  • 65、【OS】【Nuttx】任务休眠与唤醒:nxsig_clockwait
  • BeikeShop - 一个开源、用户友好的跨境电子商务平台
  • 北京做网站好的公司/夜夜草
  • 威联通231p做网站/单页应用seo如何解决
  • 做软件项目的网站/网站推广的四个阶段
  • 坪地网站建设公司/网站权重等级
  • crm管理系统都有哪些/湖南优化推广
  • html5怎末做意见反馈网站/如何把品牌推广出去