servlet+jdbc+jsp实现增加操作

代码从上至下:

UserDao:

java 复制代码
package dao;

import entity.User;
import util.JDBCUtil;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

public class UserDao {
    public void addUser(User user) {
        String sql = "INSERT INTO  user(name, age, gender) VALUES (?, ?, ?)";
        Connection conn = null;
        PreparedStatement pstmt = null;
        try {
            conn = JDBCUtil.getConnection();
            pstmt = conn.prepareStatement(sql);
            pstmt.setString(1, user.getName());
            pstmt.setInt(2, user.getAge());
            pstmt.setString(3, user.getGender());
            System.out.println(pstmt.toString());
            pstmt.executeUpdate();
        } catch (SQLException e) {
            System.out.println("添加用户失败: " + e.getMessage());
        } finally {
            JDBCUtil.close(conn, pstmt, null);
        }
    }

    public List<User> getAllUsers() {
        List<User> userList = new ArrayList<>();
        String sql = "SELECT name, age, gender FROM user";
        Connection conn = null;
        PreparedStatement pstmt = null;
        ResultSet rs = null;
        try {
            conn = JDBCUtil.getConnection();
            pstmt = conn.prepareStatement(sql);
            rs = pstmt.executeQuery();
            while (rs.next()) {
                User user = new User();
                user.setName(rs.getString("name"));
                user.setAge(rs.getInt("age"));
                user.setGender(rs.getString("gender"));
                userList.add(user);
            }
            return userList;
        } catch (SQLException e) {
            System.out.println("查询用户列表失败: " + e.getMessage());
            return null;
        } finally {
            JDBCUtil.close(conn, pstmt, rs);
        }
    }
}

User:

java 复制代码
package entity;

public class User {
    private String name;
    private int age;
    private String gender;

    public User() {}

    public User(String name, int age, String gender) {
        this.name = name;
        this.age = age;
        this.gender = gender;
    }

    public String getName() { return name; }
    public void setName(String name) { this.name = name; }
    public int getAge() { return age; }
    public void setAge(int age) { this.age = age; }
    public String getGender() { return gender; }
    public void setGender(String gender) { this.gender = gender; }

    public String toString() {
        return "User{" +
                "name='" + name + '\'' +
                ", age=" + age +
                ", gender='" + gender + '\'' +
                '}';
    }
}

UserService:

java 复制代码
package service;

import dao.UserDao;
import entity.User;

import java.util.List;

public class UserService {
    UserDao userDao = new UserDao();

    public void addUser(User user) {
        userDao.addUser(user);
    }

    public List<User> getAllUsers() {
        return userDao.getAllUsers();
    }
}

AddUserServlet:

java 复制代码
package service;

import dao.UserDao;
import entity.User;

import java.util.List;

public class UserService {
    UserDao userDao = new UserDao();

    public void addUser(User user) {
        userDao.addUser(user);
    }

    public List<User> getAllUsers() {
        return userDao.getAllUsers();
    }
}

ShowUserServlet:

java 复制代码
package servlet;

import entity.User;
import service.UserService;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.List;

@WebServlet("/showUsers")
public class ShowUserServlet extends HttpServlet {
    UserService userService = new UserService();

    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        List<User> userList = userService.getAllUsers();
        request.setAttribute("userList", userList);
        request.getRequestDispatcher("/showUsers.jsp").forward(request, response);
    }
}

JDBCUtil:

java 复制代码
package util;

import java.sql.*;

public class JDBCUtil {
    // 直接在代码中配置数据库连接信息(不推荐生产环境使用)
    private static final String URL = "jdbc:mysql://localhost:3306/你的数据库名字?useSSL=false&serverTimezone=UTC&characterEncoding=utf8";
    private static final String USER = "你的mysql用户名";
    private static final String PASSWORD = "你的mysql密码";
    private static final String DRIVER = "com.mysql.cj.jdbc.Driver";

    static {
        try {
            Class.forName(DRIVER);
        } catch (ClassNotFoundException e) {
            System.out.println("数据库驱动加载失败: " + e.getMessage());
        }
    }

    public static Connection getConnection() throws SQLException {
        return DriverManager.getConnection(URL, USER, PASSWORD);
    }

    public static void close(Connection conn, Statement stmt, ResultSet rs) {
        try { if (rs != null) rs.close(); } catch (SQLException e) { e.printStackTrace(); }
        try { if (stmt != null) stmt.close(); } catch (SQLException e) { e.printStackTrace(); }
        try { if (conn != null) conn.close(); } catch (SQLException e) { e.printStackTrace(); }
    }
}

前端jsp页面:

addUser.jsp:

java 复制代码
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>添加用户</title>
</head>
<body>
<h2>添加新用户</h2>
<form method="post">
    姓名:<input type="text" name="name" required><br>
    年龄:<input type="number" name="age" required><br>
    性别:<input type="text" name="gender" required><br>
    <button type="submit">提交</button>
</form>
</body>
</html>

index.jsp:

java 复制代码
<%--
  Created by IntelliJ IDEA.
  User: HP
  Date: 2025/4/20
  Time: 11:08
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>欢迎页</title>
    <style>
        body {
            font-family: Arial, sans-serif;
            text-align: center;
            padding-top: 100px;
        }
        button {
            padding: 15px 30px;
            font-size: 18px;
            background-color: #007BFF;
            color: white;
            border: none;
            border-radius: 5px;
            cursor: pointer;
            transition: background-color 0.3s;
        }
        button:hover {
            background-color: #0056b3;
        }
    </style>
</head>
<body>
<h2>欢迎使用用户管理系统</h2>
<button onclick="window.location.href='addUser'">
    点击添加新用户
</button>
</body>
</html>

showUsers.jsp:

java 复制代码
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<html>
<head>
  <title>用户列表</title>
</head>
<body>
<h2>用户列表</h2>
<table border="1">
  <tr>
    <th>姓名</th>
    <th>年龄</th>
    <th>性别</th>
  </tr>
  <c:forEach items="${userList}" var="user">
    <tr>
      <td>${user.name}</td>
      <td>${user.age}</td>
      <td>${user.gender}</td>
    </tr>
  </c:forEach>
</table>
</body>
</html>

数据库用的mysql:

至于数据库文件,非常简单,就三个字段:

java 复制代码
-- 创建数据库
CREATE DATABASE IF NOT EXISTS test_db CHARACTER SET utf8;
USE test_db;

-- 创建用户表
CREATE TABLE user (
    name VARCHAR(50) NOT NULL,
    age INT,
    gender VARCHAR(10)
);

运行截图如下:


相关推荐
我爱Jack4 分钟前
时间与空间复杂度详解:算法效率的度量衡
java·开发语言·算法
米饭「」6 分钟前
C++AVL树
java·开发语言·c++
Zonda要好好学习14 分钟前
Python入门Day4
java·网络·python
SimonKing27 分钟前
告别传统读写!RandomAccessFile让你的Java程序快人一步
java·后端·程序员
Little-Hu29 分钟前
QML TextEdit组件
java·服务器·数据库
心愿许得无限大38 分钟前
Qt 常用界面组件
开发语言·c++·qt
2401_858286111 小时前
OS15.【Linux】gdb调试器的简单使用
linux·运维·服务器·开发语言·gdb
牛马baby1 小时前
MATLAB下载安装教程(附安装包)2025最新版(MATLAB R2024b)
开发语言·matlab
shenyan~1 小时前
关于 c、c#、c++ 三者区别
开发语言·c++
Ashlee_code1 小时前
什么是Web3?金融解决方案
开发语言·金融·架构·eclipse·web3·区块链·php