下面来详细讲解 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) | 性别 |
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技术站