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实现消息队列的两种方式(小结)”的详细讲解: 1. 引言 消息队列是一种用于传递异步消息的通信方式,常被应用于一些高并发、大规模分布式系统中。Java作为一种广泛应用于企业级应用的编程语言,一定程度上受到了消息队列的青睐。在Java中,开发者可以使用各种规范和框架来实现消息队列,本文将介绍其中常见的两种方式。 2. Java Messag…

    Java 2023年5月18日
    00
  • Java EE实现用户后台管理系统

    听起来您需要了解如何使用Java EE实现用户后台管理系统的攻略,下面是一些基本步骤: 1. 确定需求和功能 在开发用户后台管理系统之前,首先需要明确系统的功能和需求。例如,您需要确定用户是否需要注册,登陆,管理数据等功能需求。这些需求和功能可以形成您设计和开发系统的蓝图。 2. 选择合适的框架 选择适合您的开发需求的框架是非常重要的。Java EE中有很多…

    Java 2023年5月19日
    00
  • JavaScrip数组去重操作实例小结

    本文将详细讲解“JavaScript 数组去重操作实例小结”,包括去重的常用方法以及实例说明。 一、常用去重方法 1. Set(ES6新增) ES6 中引入了 Set 数据结构,它类似于数组,但是数组中的元素是不能重复的,可以很方便地实现数组去重。 const arr = [1, 2, 2, 3, 3, 4]; const uniqueArr = […n…

    Java 2023年5月26日
    00
  • java对同一个文件进行读写操作方法

    要在Java中对同一个文件进行读写操作,我们可以使用Java的File类和I/O流,具体方法如下: 使用File类实例化File对象来代表文件。可以在实例化File对象时指定文件的路径和文件名,例如: File file = new File("path/to/file.txt"); 其中,”path/to/file.txt”应替换为实际…

    Java 2023年5月19日
    00
  • Kafka多节点分布式集群搭建实现过程详解

    接下来我将详细讲解 “Kafka多节点分布式集群搭建实现过程详解” 的完整攻略。 1. 什么是Kafka Kafka 是一种高吞吐量的分布式发布订阅消息系统,应用于大规模的消息处理环境中,具有高可用、高性能的特点。 2. Kafka 集群搭建 2.1 环境准备 在搭建Kafka集群之前,需要准备好以下环境: Oracle JDK 1.8或以上版本 Zooke…

    Java 2023年5月20日
    00
  • java 面向对象面试集锦

    对于“java 面向对象面试集锦”的完整攻略,建议采取如下步骤: 1. 梳理面试题目 首先,需要将Java面向对象面试中常见的题目进行梳理和分类,例如: Java面向对象基础:类、对象、构造方法、封装、继承、多态等。 Java面向对象高级:抽象类、接口、泛型、反射、注解、Lambda表达式等。 在梳理题目的时候,不仅要考虑问题的难度和深度,还要关注面试官可能…

    Java 2023年5月26日
    00
  • java对象序列化与反序列化的默认格式和json格式使用示例

    Java对象序列化和反序列化是Java中常用的数据交换方式,其中序列化是将Java对象转换为字节流,可以储存到文件或网络流中,反序列化则是将字节流转换为Java对象。在Java中,序列化和反序列化的默认格式是二进制格式,而JSON格式则更加通用并且易于阅读。 默认格式的使用示例 序列化 当我们需要将一个Java对象进行序列化时,我们可以使用 ObjectOu…

    Java 2023年5月26日
    00
  • java时间格式的简单整理

    Java时间格式的简单整理 1. 时间的表示 在Java中,时间可以用两种方式表示: 时间戳:从1970年1月1日00:00:00开始,到现在的毫秒数。 时间对象:用Java中的Date类表示。 在Java 8之前,时间的处理方式比较麻烦,需要使用Date、Calendar等类进行处理。不过在Java 8之后,引入了java.time包,提供了一系列新的类和…

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