下面给你一套**「JSP + Servlet + MySQL 登录注册系统【完整 CRUD(增删改查)】实现代码」,这是课程设计 / 实训 / 毕设小项目级别**,能直接跑、能截图、能答辩的那种。
技术栈:
JSP + Servlet + JDBC + MySQL + Session(MVC 思想)
一、系统功能总览(老师最关心)
✔ 用户注册(Create)
✔ 用户登录
✔ 用户列表查询(Read)
✔ 修改用户信息(Update)
✔ 删除用户(Delete)
✔ Session 登录控制
✔ 数据库存储
二、项目结构(标准 MVC)
jsp-crud/
│
├── src/
│ ├── entity/
│ │ └── User.java
│ ├── util/
│ │ └── DBUtil.java
│ ├── dao/
│ │ └── UserDao.java
│ ├── servlet/
│ │ ├── LoginServlet.java
│ │ ├── RegisterServlet.java
│ │ ├── UserListServlet.java
│ │ ├── UserEditServlet.java
│ │ └── UserDeleteServlet.java
│
├── WebContent/
│ ├── login.jsp
│ ├── register.jsp
│ ├── userList.jsp
│ ├── userEdit.jsp
│ └── success.jsp
│
└── web.xml
三、数据库设计(MySQL)
CREATE DATABASE jsp_crud DEFAULT CHARSET utf8;
USE jsp_crud;
CREATE TABLE user (
id INT PRIMARY KEY AUTO_INCREMENT,
username VARCHAR(50) UNIQUE NOT NULL,
password VARCHAR(50) NOT NULL
);
四、数据库工具类(DBUtil)
package util;
import java.sql.*;
public class DBUtil {
private static final String URL =
"jdbc:mysql://localhost:3306/jsp_crud?useUnicode=true&characterEncoding=utf8";
private static final String USER = "root";
private static final String PASSWORD = "123456";
static {
try {
Class.forName("com.mysql.cj.jdbc.Driver");
} catch (Exception e) {
e.printStackTrace();
}
}
public static Connection getConnection() throws SQLException {
return DriverManager.getConnection(URL, USER, PASSWORD);
}
}
五、实体类(User.java)
package entity;
public class User {
private int id;
private String username;
private String password;
public User() {}
public User(int id, String username, String password) {
this.id = id;
this.username = username;
this.password = password;
}
// getter / setter
}
六、DAO 层(核心 CRUD)
package dao;
import entity.User;
import util.DBUtil;
import java.sql.*;
import java.util.*;
public class UserDao {
// 注册(增)
public void addUser(User user) throws Exception {
String sql = "INSERT INTO user(username,password) VALUES(?,?)";
try (Connection c = DBUtil.getConnection();
PreparedStatement ps = c.prepareStatement(sql)) {
ps.setString(1, user.getUsername());
ps.setString(2, user.getPassword());
ps.executeUpdate();
}
}
// 登录(查)
public User login(String username, String password) throws Exception {
String sql = "SELECT * FROM user WHERE username=? AND password=?";
try (Connection c = DBUtil.getConnection();
PreparedStatement ps = c.prepareStatement(sql)) {
ps.setString(1, username);
ps.setString(2, password);
ResultSet rs = ps.executeQuery();
if (rs.next()) {
return new User(
rs.getInt("id"),
rs.getString("username"),
rs.getString("password")
);
}
}
return null;
}
// 查询全部(查)
public List<User> findAll() throws Exception {
List<User> list = new ArrayList<>();
String sql = "SELECT * FROM user";
try (Connection c = DBUtil.getConnection();
Statement s = c.createStatement();
ResultSet rs = s.executeQuery(sql)) {
while (rs.next()) {
list.add(new User(
rs.getInt("id"),
rs.getString("username"),
rs.getString("password")
));
}
}
return list;
}
// 根据 ID 查询
public User findById(int id) throws Exception {
String sql = "SELECT * FROM user WHERE id=?";
try (Connection c = DBUtil.getConnection();
PreparedStatement ps = c.prepareStatement(sql)) {
ps.setInt(1, id);
ResultSet rs = ps.executeQuery();
if (rs.next()) {
return new User(
rs.getInt("id"),
rs.getString("username"),
rs.getString("password")
);
}
}
return null;
}
// 修改(改)
public void update(User user) throws Exception {
String sql = "UPDATE user SET username=?,password=? WHERE id=?";
try (Connection c = DBUtil.getConnection();
PreparedStatement ps = c.prepareStatement(sql)) {
ps.setString(1, user.getUsername());
ps.setString(2, user.getPassword());
ps.setInt(3, user.getId());
ps.executeUpdate();
}
}
// 删除(删)
public void delete(int id) throws Exception {
String sql = "DELETE FROM user WHERE id=?";
try (Connection c = DBUtil.getConnection();
PreparedStatement ps = c.prepareStatement(sql)) {
ps.setInt(1, id);
ps.executeUpdate();
}
}
}
七、Servlet 层(控制器)
1️⃣ 注册
@WebServlet("/RegisterServlet")
public class RegisterServlet extends HttpServlet {
protected void doPost(HttpServletRequest req, HttpServletResponse resp)
throws IOException {
try {
UserDao dao = new UserDao();
User user = new User();
user.setUsername(req.getParameter("username"));
user.setPassword(req.getParameter("password"));
dao.addUser(user);
resp.sendRedirect("login.jsp");
} catch (Exception e) {
resp.getWriter().write("注册失败");
}
}
}
2️⃣ 登录
@WebServlet("/LoginServlet")
public class LoginServlet extends HttpServlet {
protected void doPost(HttpServletRequest req, HttpServletResponse resp)
throws IOException {
try {
UserDao dao = new UserDao();
User user = dao.login(
req.getParameter("username"),
req.getParameter("password")
);
if (user != null) {
req.getSession().setAttribute("user", user);
resp.sendRedirect("UserListServlet");
} else {
resp.getWriter().write("登录失败");
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
3️⃣ 用户列表(查)
@WebServlet("/UserListServlet")
public class UserListServlet extends HttpServlet {
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws IOException, ServletException {
try {
UserDao dao = new UserDao();
req.setAttribute("list", dao.findAll());
req.getRequestDispatcher("userList.jsp").forward(req, resp);
} catch (Exception e) {
e.printStackTrace();
}
}
}
4️⃣ 删除
@WebServlet("/UserDeleteServlet")
public class UserDeleteServlet extends HttpServlet {
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws IOException {
try {
new UserDao().delete(
Integer.parseInt(req.getParameter("id"))
);
resp.sendRedirect("UserListServlet");
} catch (Exception e) {
e.printStackTrace();
}
}
}
5️⃣ 修改(查 + 改)
@WebServlet("/UserEditServlet")
public class UserEditServlet extends HttpServlet {
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
try {
User user = new UserDao()
.findById(Integer.parseInt(req.getParameter("id")));
req.setAttribute("user", user);
req.getRequestDispatcher("userEdit.jsp").forward(req, resp);
} catch (Exception e) {
e.printStackTrace();
}
}
protected void doPost(HttpServletRequest req, HttpServletResponse resp)
throws IOException {
try {
User user = new User(
Integer.parseInt(req.getParameter("id")),
req.getParameter("username"),
req.getParameter("password")
);
new UserDao().update(user);
resp.sendRedirect("UserListServlet");
} catch (Exception e) {
e.printStackTrace();
}
}
}
八、JSP 页面
登录(login.jsp)
<form action="LoginServlet" method="post">
用户名:<input name="username"><br>
密码:<input type="password" name="password"><br>
<button>登录</button>
</form>
<a href="register.jsp">注册</a>
注册(register.jsp)
<form action="RegisterServlet" method="post">
用户名:<input name="username"><br>
密码:<input type="password" name="password"><br>
<button>注册</button>
</form>
用户列表(userList.jsp)
<%@ page import="java.util.*,entity.User" %>
<table border="1">
<tr><th>ID</th><th>用户名</th><th>操作</th></tr>
<%
for(User u : (List<User>)request.getAttribute("list")){
%>
<tr>
<td><%=u.getId()%></td>
<td><%=u.getUsername()%></td>
<td>
<a href="UserEditServlet?id=<%=u.getId()%>">编辑</a>
<a href="UserDeleteServlet?id=<%=u.getId()%>">删除</a>
</td>
</tr>
<% } %>
</table>
修改(userEdit.jsp)
<%@ page import="entity.User" %>
<%
User u = (User)request.getAttribute("user");
%>
<form action="UserEditServlet" method="post">
<input type="hidden" name="id" value="<%=u.getId()%>">
用户名:<input name="username" value="<%=u.getUsername()%>"><br>
密码:<input name="password" value="<%=u.getPassword()%>"><br>
<button>保存</button>
</form>
九、完整流程(答辩直接背)
1️⃣ JSP 提供界面
2️⃣ Servlet 接收请求
3️⃣ DAO 操作 MySQL
4️⃣ ResultSet → Java 对象
5️⃣ JSP 展示数据
6️⃣ Session 管理登录状态
十、如果你要「直接交作业」
我可以帮你👇
✔ 升级成 JSTL + EL(去 Scriptlet)
✔ 加动态背景 + 美化页面
✔ 写课程设计报告(8000 字)
✔ 打包 IDEA / Eclipse 项目
✔ 加登录拦截器 Filter
发表回复