基于 Java Web 的增删改查项目实现
本文将详细介绍一个基于 Java Web 的增删改查项目,包括前端页面、JavaScript 交互逻辑、后端 Servlet 处理以及数据库操作。
项目结构
project
├── src
│ ├── com.myFirstWeb.servlet
│ │ ├── SearchServlet.java
│ │ ├── SearchByName.java
│ │ ├── AddServlet.java
│ │ ├── DeleteServlet.java
│ │ ├── UpdateServlet.java
│ │ ├── SearchById.java
│ ├── com.myFirstWeb.db
│ ├── MysqlUtil.java
│ ├── DBConnection.java
├── web
│ ├── index.html
│ ├── js
│ │ ├── JQuery.js
│ │ ├── index.js
│ ├── css
│ ├── style.css
数据库设计
数据表:student
字段名 | 数据类型 | 描述 |
---|---|---|
id | INT | 学生ID(主键,自增) |
name | VARCHAR | 学生姓名 |
sex | VARCHAR | 学生性别 |
age | INT | 学生年龄 |
前端页面
HTML 代码
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>学生管理系统</title>
<script src="js/JQuery.js"></script>
<script src="js/index.js" defer></script>
<style>
.addModel {
margin-top: 30px;
width: 260px;
height: 180px;
border: orange solid 5px;
padding: 20px;
}
.updateModel {
margin-top: 30px;
width: 260px;
height: 180px;
border: skyblue solid 5px;
padding: 20px;
display: none;
}
</style>
</head>
<body>
<input type="text" class="name">
<input type="button" value="搜索" class="btn">
<table border="1">
<thead>
</thead>
<tbody>
</tbody>
</table>
<div class="addModel">
姓名:<input type="text" class="a_name"><br><br>
年龄:<input type="text" class="a_age"><br><br>
性别:<input type="text" class="a_sex"><br><br>
<input type="button" value="添加" class="add">
</div>
<div class="updateModel">
姓名:<input type="text" class="u_name"><br><br>
年龄:<input type="text" class="u_age"><br><br>
性别:<input type="text" class="u_sex"><br><br>
<input type="button" value="修改" class="updatebutton">
</div>
</body>
</html>
JavaScript 交互逻辑
核心功能
-
页面加载时查询所有数据
-
搜索功能
-
添加功能
-
删除功能
-
修改功能
// 页面加载时查询所有数据
$(document).ready(function () {
$.ajax({
url: "SearchServlet",
type: "get",
success: function (value) {
renderTable(value.data);
},
error: function () {
alert("查找出错了");
}
});
});
// 渲染表格
function renderTable(data) {
$("thead").append("<tr>" +
"<th>id</th>" +
"<th>name</th>" +
"<th>sex</th>" +
"<th>age</th>" +
"<th>操作</th>" +
"</tr>");
$("tbody").empty();
data.forEach(function (item) {
$("tbody").append("<tr>" +
"<td>" + item.id + "</td>" +
"<td>" + item.name + "</td>" +
"<td>" + item.sex + "</td>" +
"<td>" + item.age + "</td>" +
"<td>" +
"<input type='button' value='修改' class='update' index='" + item.id + "'>" +
"<input type='button' value='删除' class='delete' index='" + item.id + "'>" +
"</td>" +
"</tr>");
});
}
// 搜索功能
$(".btn").on("click", function () {
var name = $(".name").val();
$.ajax({
url: "SearchByName?na=" + name,
type: "get",
success: function (value) {
renderTable(value.data);
},
error: function () {
alert("查找出错了");
}
});
});
// 添加功能
$(".add").on("click", function () {
var name = $(".a_name").val();
var sex = $(".a_sex").val();
var age = $(".a_age").val();
$.ajax({
url: "AddServlet",
type: "post",
data: {
name: name,
sex: sex,
age: age
},
success: function (value) {
alert(value);
location.reload();
},
error: function () {
alert("添加出错啦");
}
});
});
// 删除功能
$("tbody").on("click", ".delete", function () {
var id = $(this).attr("index");
$.ajax({
url: "DeleteServlet",
type: "post",
data: {
id: id
},
success: function (value) {
alert(value);
location.reload();
},
error: function () {
alert("删除出错啦");
}
});
});
// 修改功能
$("tbody").on("click", ".update", function () {
$(".updateModel").css("display", "block");
$(".addModel").css("display", "none");
var id = $(this).attr("index");
$.ajax({
url: "SearchById?id=" + id,
type: "get",
success: function (value) {
var obj = value.data[0];
$(".updatebutton").attr("index", obj.id);
$(".u_name").val(obj.name);
$(".u_sex").val(obj.sex);
$(".u_age").val(obj.age);
},
error: function () {
alert("查找出错啦");
}
});
});
$(".updatebutton").on("click", function () {
var id = $(".updatebutton").attr("index");
var name = $(".u_name").val();
var sex = $(".u_sex").val();
var age = $(".u_age").val();
$.ajax({
url: "UpdateServlet",
type: "post",
data: {
id: id,
name: name,
age: age,
sex: sex
},
success: function (value) {
alert(value);
location.reload();
},
error: function () {
alert("修改出错啦");
}
});
});
后端处理
1. 查询所有数据
SearchServlet
package com.myFirstWeb.servlet;
import java.io.IOException;
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.myFirstWeb.db.MysqlUtil;
@WebServlet("/SearchServlet")
public class SearchServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("application/json;charset=utf-8");
String sql = "SELECT * FROM student";
String[] columns = {"id", "name", "sex", "age"};
String res = MysqlUtil.getJsonBySql(sql, columns);
response.getWriter().write(res);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
}
2. 按名称搜索
SearchByName
package com.myFirstWeb.servlet;
import java.io.IOException;
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.myFirstWeb.db.MysqlUtil;
@WebServlet("/SearchByName")
public class SearchByName extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("utf-8");
response.setContentType("application/json;charset=utf-8");
String name = request.getParameter("na");
String sql = "SELECT * FROM student WHERE name = \"" + name + "\"";
String[] columns = {"id", "name", "sex", "age"};
String res = MysqlUtil.getJsonBySql(sql, columns);
response.getWriter().write(res);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
}
3. 添加数据
AddServlet
package com.myFirstWeb.servlet;
import java.io.IOException;
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.myFirstWeb.db.MysqlUtil;
@WebServlet("/AddServlet")
public class AddServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("utf-8");
response.setCharacterEncoding("utf-8");
String name = request.getParameter("name");
String sex = request.getParameter("sex");
String age = request.getParameter("age");
String sql = "INSERT INTO student (age, name, sex) VALUES (" + age + ", \"" + name + "\", \"" + sex + "\")";
int num = MysqlUtil.add(sql);
String res = num > 0 ? "添加成功" : "添加失败";
response.getWriter().write(res);
}
}
4. 删除数据
DeleteServlet
package com.myFirstWeb.servlet;
import java.io.IOException;
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.myFirstWeb.db.MysqlUtil;
@WebServlet("/DeleteServlet")
public class DeleteServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("utf-8");
response.setCharacterEncoding("utf-8");
String id = request.getParameter("id");
String sql = "DELETE FROM student WHERE id = " + id;
int num = MysqlUtil.del(sql);
String res = num > 0 ? "删除成功" : "删除失败";
response.getWriter().write(res);
}
}
5. 修改数据
UpdateServlet
package com.myFirstWeb.servlet;
import java.io.IOException;
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.myFirstWeb.db.MysqlUtil;
@WebServlet("/UpdateServlet")
public class UpdateServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("utf-8");
response.setCharacterEncoding("utf-8");
String id = request.getParameter("id");
String name = request.getParameter("name");
String sex = request.getParameter("sex");
String age = request.getParameter("age");
String sql = "UPDATE student SET name = \"" + name + "\", sex = \"" + sex + "\", age = " + age + " WHERE id = " + id;
int num = MysqlUtil.update(sql);
String res = num > 0 ? "修改成功" : "修改失败";
response.getWriter().write(res);
}
}
数据库操作工具类
MysqlUtil
package com.myFirstWeb.db;
import java.sql.*;
import java.util.ArrayList;
import java.util.HashMap;
public class MysqlUtil {
private static Connection getConnection() throws ClassNotFoundException, SQLException {
Class.forName("com.mysql.jdbc.Driver");
return DriverManager.getConnection("jdbc:mysql://localhost:3306/mydb", "root", "password");
}
public static String getJsonBySql(String sql, String[] columns) throws SQLException {
StringBuilder json = new StringBuilder("[");
Connection connection = getConnection();
Statement statement = connection.createStatement();
ResultSet resultSet = statement.executeQuery(sql);
while (resultSet.next()) {
json.append("{");
for (int i = 0; i < columns.length; i++) {
String column = columns[i];
json.append("\"").append(column).append("\":\"").append(resultSet.getString(column)).append("\"");
if (i < columns.length - 1) {
json.append(",");
}
}
json.append("},");
}
json.append("]");
resultSet.close();
statement.close();
connection.close();
return json.toString();
}
public static int add(String sql) throws SQLException {
Connection connection = getConnection();
Statement statement = connection.createStatement();
int num = statement.executeUpdate(sql);
statement.close();
connection.close();
return num;
}
public static int del(String sql) throws SQLException {
Connection connection = getConnection();
Statement statement = connection.createStatement();
int num = statement.executeUpdate(sql);
statement.close();
connection.close();
return num;
}
public static int update(String sql) throws SQLException {
Connection connection = getConnection();
Statement statement = connection.createStatement();
int num = statement.executeUpdate(sql);
statement.close();
connection.close();
return num;
}
}
总结
通过以上实现,我们完成了一个完整的增删改查项目,包括:
-
前端页面:实现了数据展示、添加、修改和删除功能。
-
JavaScript 交互:通过 AJAX 实现了与后端的异步通信。
-
后端 Servlet:处理了前端的请求并返回 JSON 数据。
-
数据库操作:通过工具类实现了对数据库的增删改查操作。
希望本文对你实现类似的项目有所帮助!如果有任何问题,欢迎在评论区留言讨论。 😊