一个简单的学生管理小项目

基于 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

字段名数据类型描述
idINT学生ID(主键,自增)
nameVARCHAR学生姓名
sexVARCHAR学生性别
ageINT学生年龄

前端页面

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 交互逻辑

核心功能

  1. 页面加载时查询所有数据

  2. 搜索功能

  3. 添加功能

  4. 删除功能

  5. 修改功能

// 页面加载时查询所有数据
$(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;
    }
}

总结

通过以上实现,我们完成了一个完整的增删改查项目,包括:

  1. 前端页面:实现了数据展示、添加、修改和删除功能。

  2. JavaScript 交互:通过 AJAX 实现了与后端的异步通信。

  3. 后端 Servlet:处理了前端的请求并返回 JSON 数据。

  4. 数据库操作:通过工具类实现了对数据库的增删改查操作。

希望本文对你实现类似的项目有所帮助!如果有任何问题,欢迎在评论区留言讨论。 😊

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值