Java JSP 数据库增删改查(CRUD)应用

在现代Web应用开发中,CRUD(创建、读取、更新和删除)操作是后端与数据库交互的基础。本文将介绍如何使用Java和JSP实现数据库的增删改查功能,并提供示例代码,帮助你快速上手。

一、环境准备

  1. JDK:确保你的机器上安装了JDK(推荐使用版本8及以上)。
  2. 数据库:可以使用MySQL或者任何其他的关系型数据库。
  3. 开发工具:可以使用IDE如Intelij IDEA或Eclipse来编写Java代码和JSP页面。
  4. Web服务器:Apache Tomcat是一个常用的Java Web服务器。

二、数据库设计

假设我们要管理一个简单的用户信息表,其SQL结构如下:

CREATE TABLE users (
    id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(50) NOT NULL,
    email VARCHAR(50) NOT NULL
);

三、JDBC和JSP的结合

为了实现对数据库的操作,我们需要使用JDBC(Java Database Connectivity)来连接数据库。

  1. 数据库连接工具类

首先,创建一个数据库连接工具类DBUtil.java

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

public class DBUtil {
    private static final String URL = "jdbc:mysql://localhost:3306/your_database";
    private static final String USER = "username";
    private static final String PASSWORD = "password";
    
    public static Connection getConnection() throws SQLException {
        return DriverManager.getConnection(URL, USER, PASSWORD);
    }
}

四、实现CRUD操作

1. 创建操作(Create)

创建用户的JSP页面及Servlet:

<!-- createUser.jsp -->
<form action="CreateUserServlet" method="POST">
    Name: <input type="text" name="name" required />
    Email: <input type="email" name="email" required />
    <input type="submit" value="Add User" />
</form>

Servlet代码:

import java.io.IOException;
import java.sql.Connection;
import java.sql.PreparedStatement;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

@WebServlet("/CreateUserServlet")
public class CreateUserServlet extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) 
        throws ServletException, IOException {
        
        String name = request.getParameter("name");
        String email = request.getParameter("email");
        
        try (Connection conn = DBUtil.getConnection()) {
            String sql = "INSERT INTO users (name, email) VALUES (?, ?)";
            PreparedStatement statement = conn.prepareStatement(sql);
            statement.setString(1, name);
            statement.setString(2, email);
            statement.executeUpdate();
        } catch (Exception e) {
            e.printStackTrace();
        }
        
        response.sendRedirect("success.jsp");
    }
}

2. 读取操作(Read)

创建一个显示用户列表的JSP页面:

<!-- userList.jsp -->
<%@ page import="java.sql.*, java.util.*" %>
<%
    List<String> users = new ArrayList<>();
    try (Connection conn = DBUtil.getConnection()) {
        String sql = "SELECT * FROM users";
        PreparedStatement statement = conn.prepareStatement(sql);
        ResultSet rs = statement.executeQuery();
        
        while (rs.next()) {
            users.add(rs.getString("name") + " - " + rs.getString("email"));
        }
    } catch (Exception e) {
        e.printStackTrace();
    }
%>
<ul>
<% for (String user : users) { %>
    <li><%= user %></li>
<% } %>
</ul>

3. 更新操作(Update)

创建一个更新用户信息的Servlet:

@WebServlet("/UpdateUserServlet")
public class UpdateUserServlet extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) 
        throws ServletException, IOException {
        
        int id = Integer.parseInt(request.getParameter("id"));
        String name = request.getParameter("name");
        String email = request.getParameter("email");
        
        try (Connection conn = DBUtil.getConnection()) {
            String sql = "UPDATE users SET name = ?, email = ? WHERE id = ?";
            PreparedStatement statement = conn.prepareStatement(sql);
            statement.setString(1, name);
            statement.setString(2, email);
            statement.setInt(3, id);
            statement.executeUpdate();
        } catch (Exception e) {
            e.printStackTrace();
        }
        
        response.sendRedirect("userList.jsp");
    }
}

4. 删除操作(Delete)

创建一个删除用户的Servlet:

@WebServlet("/DeleteUserServlet")
public class DeleteUserServlet extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) 
        throws ServletException, IOException {
        
        int id = Integer.parseInt(request.getParameter("id"));
        
        try (Connection conn = DBUtil.getConnection()) {
            String sql = "DELETE FROM users WHERE id = ?";
            PreparedStatement statement = conn.prepareStatement(sql);
            statement.setInt(1, id);
            statement.executeUpdate();
        } catch (Exception e) {
            e.printStackTrace();
        }
        
        response.sendRedirect("userList.jsp");
    }
}

五、序列图

下面是一个简单的序列图,描述了用户与系统交互的过程:

sequenceDiagram
    participant User
    participant WebApp
    participant Database

    User->>WebApp: 提交创建用户表单
    WebApp->>Database: 执行INSERT语句
    Database-->>WebApp: 返回执行结果
    WebApp-->>User: 显示成功页面
    
    User->>WebApp: 获取用户列表
    WebApp->>Database: 执行SELECT语句
    Database-->>WebApp: 返回用户列表
    WebApp-->>User: 显示用户列表

六、总结

本文介绍了如何使用Java和JSP实现简单的数据库增删改查操作。通过代码示例,您可以看到数据库操作的各个部分,包括创建、读取、更新和删除用户信息。如果您希望进一步探索,可以深入学习JPA或Spring Data JPA,这些技术可以使数据操作更加简洁与高效。

通过不断实践与学习,您将会更加熟悉Web应用开发的整个过程,加油!