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日

相关文章

  • JDBC Template基本使用方法详解

    JDBC Template基本使用方法详解 JDBC Template简介 JDBC(Java Database Connectivity)是一个Java语言访问数据库的接口,JDBC Template是使用JDBC进行数据库操作的常用工具类,该类能够自动化处理资源申请、资源释放等常规流程,并提供了诸如CRUD、批量操作、分页查询等常用数据库操作方法,使用J…

    Java 2023年6月16日
    00
  • maven中pom.xml详细介绍

    下面是 Maven 中 pom.xml 的详细介绍的完整攻略。 1. 什么是 pom.xml POM, 即 Project Object Model(项目对象模型),它是 Maven 中的核心概念之一。Maven 的所有操作都是基于 POM 来完成的。 Maven项目中的每一个模块都有自己的 pom.xml 文件。这个文件包含了一些项目的信息,比如项目的依赖…

    Java 2023年5月20日
    00
  • Java 代理(Proxy)的原理及应用

    下面是Java 代理(Proxy)的原理及应用的详细攻略: 什么是Java代理? Java代理是一种为其他对象提供代理服务的模式。代理是一种中介,它在客户端和实际对象之间起到缓冲的作用,使得客户端可以通过代理来访问对象。 Java代理的核心思想是:通过代理来访问实际对象,代理可以实现对实际对象的一些控制和管理,如访问控制、数据验证、安全控制等。 Java代理…

    Java 2023年5月27日
    00
  • JIT的作用是什么?

    以下是关于“JIT的作用是什么?”的详细讲解: JIT的作用是什么? JIT(Just-In-Time)是一种编译技术,它将代码在程序运行时动态编译成机器码。与静态编译不同,JIT在程序运行时才生成真正的可执行代码,因此它可以对代码进行更高效的优化,从而提高程序的性能。 JIT的主要作用包括: 在程序运行时优化代码,以提高程序的性能; 提高代码的可读性,减少…

    Java 2023年5月11日
    00
  • 如何将java或javaweb项目打包为jar包或war包

    将Java或Java Web项目打包为Jar包或War包可以方便地将应用程序部署到不同的环境中,例如服务器上运行的Web应用程序。 下面是将Java项目打包为Jar包的步骤: 使用Java编译器编译源代码并生成.class文件: javac HelloWorld.java 将编译后的.class文件打包成Jar包: jar cf HelloWorld.jar…

    Java 2023年5月26日
    00
  • Java HttpURLConnection超时和IO异常处理

    Java中的HttpURLConnection是HTTP协议的实现,是进行HTTP通信的基础。在使用HttpURLConnection进行网络请求时,会遇到超时和IO异常等问题,需要进行相应的处理。本文将详细讲解如何处理HttpURLConnection超时和IO异常。 HttpURLConnection超时处理 超时类型 HttpURLConnection…

    Java 2023年5月27日
    00
  • SpringBoot热部署设置方法详解

    Spring Boot是一个非常流行的Java Web框架,它提供了许多方便的功能,如自动配置、快速开发和易于部署。在开发过程中,我们经常需要修改代码并重新部署应用程序。为了提高开发效率,我们可以使用Spring Boot的热部署功能,它可以在不重启应用程序的情况下自动加载修改后的代码。本文将详细介绍如何设置Spring Boot的热部署,并提供两个示例。 …

    Java 2023年5月15日
    00
  • 详解java各种集合的线程安全

    详解java各种集合的线程安全 在多线程程序中,对于集合类的操作可能会涉及到多个线程同时读写,此时需要考虑线程安全的问题。Java提供了许多线程安全的集合类,本篇文章将详细讲述Java中各种集合的线程安全性问题,以及如何使用这些集合类来保证线程安全。 简介 Java中常用的集合类可以分为List、Set和Map三大类。其中,List表示有序的集合,元素可以重…

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