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)
);

运行截图如下:


相关推荐
大樊子13 分钟前
JavaScript 中的单例模式
开发语言·javascript·单例模式
Eugene__Chen22 分钟前
java IO/NIO/AIO
java·python·nio
满怀101523 分钟前
【Python核心库实战指南】从数据处理到Web开发
开发语言·前端·python
andlbds34 分钟前
Ubuntu20.04安装Pangolin遇到的几种报错的解决方案
开发语言·c++
xixixin_36 分钟前
【uniapp】uni.setClipboardData 方法失效 bug 解决方案
java·前端·uni-app
工业互联网专业40 分钟前
基于springboot+vue的校园二手物品交易平台
java·vue.js·spring boot·毕业设计·源码·课程设计·校园二手物品交易平台
isfox1 小时前
一文拆解 Java CAS:从原理到避坑全攻略
java
JPC客栈1 小时前
LeetCode面试经典 150 题(Java题解)
java·leetcode·面试
HyperAI超神经1 小时前
【vLLM 学习】Aqlm 示例
java·开发语言·数据库·人工智能·学习·教程·vllm
异常驯兽师1 小时前
IntelliJ IDEA 项目导入后 Java 文件图标显示为红色小写 j 的解决方法
java·路径配置