jsp+servlet实现最简单的增删改查代码分享

下面来详细讲解 JSP+Servlet 实现最简单的增删改查代码分享的完整攻略。

1. 准备工作

在开始编写代码之前,需要先准备好以下工具和环境:

  • JDK 1.8 或以上版本
  • Tomcat 8 或以上版本
  • Eclipse 或其他 Java IDE

2. 创建项目

在 Eclipse 中创建新的动态 Web 项目,选择 Web Application 项目类型,并指定项目名称和路径。在创建项目的过程中,需要指定 Tomcat 的安装目录作为项目的运行时环境。

3. 创建数据库

在 MySQL 数据库中创建一个名为 test 的数据库,并创建一个名为 user 的表,包含以下字段:

字段名 数据类型 说明
id INT 编号
name VARCHAR(20) 姓名
age INT 年龄
gender VARCHAR(6) 性别
email VARCHAR(50) 邮箱
createDate DATETIME 创建时间

4. 编写实体类

创建一个名为 User 的实体类,在类中定义与数据库表结构对应的属性,并添加默认构造方法和有参构造方法,以及对应的 getter 和 setter 方法。

package com.example.demo.entity;

import java.util.Date;

public class User {
    private int id;
    private String name;
    private int age;
    private String gender;
    private String email;
    private Date createDate;

    public User() {}

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

    // 省略 getter 和 setter 方法

}

5. 编写 DAO 层

创建一个名为 UserDAO 的类,并定义对数据库进行增删改查操作的方法。在类中添加一个名为 getConnection() 的静态方法,用于获取数据库连接;在方法中使用 Class.forName() 方法进行 JDBC 驱动加载,并使用 DriverManager.getConnection(url, username, password) 方法获取连接。

package com.example.demo.dao;

import java.sql.*;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import com.example.demo.entity.User;

public class UserDAO {
    private static final String URL = "jdbc:mysql://localhost:3306/test?useSSL=false&serverTimezone=UTC";
    private static final String USERNAME = "root";
    private static final String PASSWORD = "12345678";

    // 获取数据库连接
    public static Connection getConnection() {
        Connection conn = null;

        try {
            Class.forName("com.mysql.cj.jdbc.Driver");
            conn = DriverManager.getConnection(URL, USERNAME, PASSWORD);
        } catch (ClassNotFoundException | SQLException e) {
            e.printStackTrace();
        }

        return conn;
    }

    // 新增用户
    public static void addUser(User user) {
        Connection conn = getConnection();

        String sql = "INSERT INTO user(name, age, gender, email, createDate) VALUES(?, ?, ?, ?, ?)";

        try (PreparedStatement ps = conn.prepareStatement(sql)) {
            ps.setString(1, user.getName());
            ps.setInt(2, user.getAge());
            ps.setString(3, user.getGender());
            ps.setString(4, user.getEmail());
            ps.setTimestamp(5, new Timestamp(user.getCreateDate().getTime()));

            ps.executeUpdate();
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            try {
                conn.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }

    // 删除用户
    public static void deleteUser(int id) {
        Connection conn = getConnection();

        String sql = "DELETE FROM user WHERE id = ?";

        try (PreparedStatement ps = conn.prepareStatement(sql)) {
            ps.setInt(1, id);

            ps.executeUpdate();
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            try {
                conn.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }

    // 更新用户
    public static void updateUser(int id, User user) {
        Connection conn = getConnection();

        String sql = "UPDATE user SET name = ?, age = ?, gender = ?, email = ?, createDate = ? WHERE id = ?";

        try (PreparedStatement ps = conn.prepareStatement(sql)) {
            ps.setString(1, user.getName());
            ps.setInt(2, user.getAge());
            ps.setString(3, user.getGender());
            ps.setString(4, user.getEmail());
            ps.setTimestamp(5, new Timestamp(user.getCreateDate().getTime()));
            ps.setInt(6, id);

            ps.executeUpdate();
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            try {
                conn.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }

    // 查询用户
    public static List<User> getUsers() {
        Connection conn = getConnection();
        List<User> users = new ArrayList<>();

        String sql = "SELECT * FROM user";

        try (Statement stmt = conn.createStatement(); ResultSet rs = stmt.executeQuery(sql)) {
            while (rs.next()) {
                User user = new User();
                user.setId(rs.getInt(1));
                user.setName(rs.getString(2));
                user.setAge(rs.getInt(3));
                user.setGender(rs.getString(4));
                user.setEmail(rs.getString(5));
                user.setCreateDate(new Date(rs.getTimestamp(6).getTime()));

                users.add(user);
            }
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            try {
                conn.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }

        return users;
    }
}

6. 编写 Servlet

创建一个名为 UserServlet 的 Servlet 类,用于处理 HTTP 请求,并将请求转发给对应的 JSP 页面进行响应。在类中实现 doGet 和 doPost 方法,根据请求中的不同参数进行不同的操作。

package com.example.demo.servlet;

import java.io.IOException;
import java.util.Date;
import java.util.List;

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 com.example.demo.dao.UserDAO;
import com.example.demo.entity.User;

@WebServlet("/user")
public class UserServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;

    public UserServlet() {
        super();
    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        String action = request.getParameter("action");

        if ("add".equals(action)) {
            String name = request.getParameter("name");
            int age = Integer.parseInt(request.getParameter("age"));
            String gender = request.getParameter("gender");
            String email = request.getParameter("email");

            User user = new User(0, name, age, gender, email, new Date());
            UserDAO.addUser(user);
        } else if ("delete".equals(action)) {
            int id = Integer.parseInt(request.getParameter("id"));

            UserDAO.deleteUser(id);
        } else if ("update".equals(action)) {
            int id = Integer.parseInt(request.getParameter("id"));
            String name = request.getParameter("name");
            int age = Integer.parseInt(request.getParameter("age"));
            String gender = request.getParameter("gender");
            String email = request.getParameter("email");

            User user = new User(id, name, age, gender, email, new Date());
            UserDAO.updateUser(id, user);
        }

        List<User> users = UserDAO.getUsers();
        request.setAttribute("users", users);

        request.getRequestDispatcher("/index.jsp").forward(request, response);
    }

    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        doGet(request, response);
    }
}

7. 编写 JSP 页面

在 WebContent 目录下创建一个名为 index.jsp 的 JSP 页面,用于展示用户列表和新增、删除、编辑用户的操作。在页面中使用 JSTL 标签库进行表单控件和数据的渲染。

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>User List</title>
</head>
<body>
    <h1>User List</h1>
    <table border="1">
        <tr>
            <th>ID</th>
            <th>Name</th>
            <th>Age</th>
            <th>Gender</th>
            <th>Email</th>
            <th>Create Date</th>
            <th>Operation</th>
        </tr>
        <c:forEach items="${users}" var="user">
            <tr>
                <td>${user.id}</td>
                <td>${user.name}</td>
                <td>${user.age}</td>
                <td>${user.gender}</td>
                <td>${user.email}</td>
                <td>${user.createDate}</td>
                <td>
                    <a href="user?action=delete&id=${user.id}">Delete</a>
                    <a href="update.jsp?id=${user.id}">Edit</a>
                </td>
            </tr>
        </c:forEach>
    </table>
    <hr>
    <h2>Add New User</h2>
    <form action="user" method="get">
        <input type="hidden" name="action" value="add">
        <label>Name:</label>
        <input type="text" name="name"><br>
        <label>Age:</label>
        <input type="number" name="age"><br>
        <label>Gender:</label>
        <select name="gender">
            <option value="male">Male</option>
            <option value="female">Female</option>
        </select><br>
        <label>Email:</label>
        <input type="email" name="email"><br>
        <input type="submit" value="Add">
    </form>
</body>
</html>

8. 测试和运行

将项目部署到 Tomcat 服务器上,并启动服务器。在浏览器中访问 http://localhost:8080/项目名称/index.jsp,即可看到用户列表和新增、删除、编辑用户的操作界面。

示例1: 新增用户

在上面的操作界面中填写新增用户的信息,并点击 Add 按钮,即可新增一个用户。在新增用户后,页面会自动刷新,显示新增之后的用户列表。

示例2: 删除用户

在用户列表中,点击某个用户的 Delete 链接,即可删除该用户。在删除用户后,页面会自动刷新,显示删除之后的用户列表。

以上就是 JSP+Servlet 实现最简单的增删改查代码分享的完整攻略。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:jsp+servlet实现最简单的增删改查代码分享 - Python技术站

(0)
上一篇 2023年6月15日
下一篇 2023年6月15日

相关文章

  • Java初学者问题图解(动力节点Java学院整理)

    对于“Java初学者问题图解(动力节点Java学院整理)”这个主题,我可以提供以下完整攻略: Java初学者问题图解 前言 Java作为一门广受欢迎的编程语言,吸引了许多初学者,但在学习过程中难免会遇到问题。本文就对Java学习过程中常见的问题进行了整理,并提供了图解和解决方法。 字符串问题 1. 字符串比较 问题描述:如何比较两个字符串是否相等? 问题分析…

    Java 2023年5月25日
    00
  • Spring Security源码解析之权限访问控制是如何做到的

    首先,Spring Security是一个基于Spring框架的安全框架,它提供了身份认证和授权等功能,帮助我们防止各种安全攻击,保障我们的应用程序安全。 Spring Security的权限访问控制是通过访问控制表达式来实现的,可以在配置文件中配置。访问控制表达式包含了许多参数和操作符,用于判断用户是否有权访问特定的资源。具体来说,Spring Secur…

    Java 2023年5月20日
    00
  • Java基础之Bean的创建、定位和使用

    Java基础之Bean的创建、定位和使用 在Java开发中,Bean是非常常用的一种Java类。Bean是一种被特殊编写的Java类,通常用于封装和传输数据,它拥有以下几个特点: 具有无参构造器 具有getter/setter方法 实现序列化接口 下面我们将对Bean的创建、定位和使用进行详细讲解。 Bean的创建 JavaBean的创建需要满足上述特点,以…

    Java 2023年5月26日
    00
  • Java Hibernate中的持久化类和实体类关系

    Java Hibernate是一个用于持久化Java对象的框架。持久化类和实体类是Hibernate所涉及到的两个重要概念。本文将通过详细讲解持久化类和实体类的概念、关系及其使用方法,帮助读者更好地理解Hibernate框架的使用方法。 持久化类和实体类的概念 持久化类是指可以被保存到数据库中的Java类。这些Java类通常被映射到数据库中的表,其中每个属性…

    Java 2023年5月20日
    00
  • Java 23种设计模型详解

    Java 23种设计模型详解 Java 23种设计模型是一组在软件开发中广泛使用的可重用的设计思想或解决方案。了解这些设计模型可以帮助软件开发人员更容易地设计和开发高质量的软件系统。本篇攻略详细介绍了Java 23种设计模型,其中包含了每种模型的定义、使用场景、示例程序以及注意事项。 单例模式 定义:确保一个类只有一个实例,并提供该实例的全局访问点。 使用场…

    Java 2023年5月19日
    00
  • MyBatis 如何简化的 JDBC(思路详解)

    大家好,这里是网站的作者,请听我详细讲解一下 “MyBatis 如何简化的 JDBC(思路详解)” 的完整攻略。 1. MyBatis简介 MyBatis是一款非常流行的轻量级Java持久层框架,它可以将JDBC的操作进行封装,简化了JDBC代码的编写,使得开发人员不用再关注过多的JDBC细节,而是更加专注于业务逻辑的处理。 2. MyBatis如何简化JD…

    Java 2023年5月20日
    00
  • mybatis-generator自动生成dao、mapping、bean配置操作

    下面我详细讲解一下mybatis-generator自动生成dao、mapping、bean配置操作的完整攻略。 1. Mybatis-Generator简介 Mybatis-Generator是Mybatis的一个辅助插件,它可以自动生成Mybatis的DAO层、Mapping配置文件以及Java Bean类,用于简化开发人员的工作量。 2. 配置Myba…

    Java 2023年5月20日
    00
  • 浅析Redis中String数据类型及其底层编码

    浅析Redis中String数据类型及其底层编码 String数据类型介绍 Redis中String数据类型是最基本、最常用的数据类型之一,它可以保存字符串、整数或者浮点数。String类型可以进行增删改查等常见操作,支持的操作包括SET、GET、INCR等。 String数据类型底层编码 Redis中,对于每一种数据类型,都有对应的底层编码方式,Strin…

    Java 2023年6月1日
    00
合作推广
合作推广
分享本页
返回顶部