以下是一个示例的JSP+Servlet代码实现大学生管理系统的部分功能:

  1. 学生类(Student.java):
public class Student {
    private int id;
    private String name;
    private String studentId;
    private String gender;
    private String major;
    private String phoneNumber;
    private String email;

    // 构造方法和getter/setter方法省略
}
  1. 数据库操作类(DBUtil.java):
public class DBUtil {
    private static final String URL = "jdbc:mysql://localhost:3306/student_course?useUnicode=true&characterEncoding=utf8mb4";
    private static final String USERNAME = "root";
    private static final String PASSWORD = "password";

    public static Connection getConnection() throws SQLException {
        return DriverManager.getConnection(URL, USERNAME, PASSWORD);
    }

    public static void closeConnection(Connection conn, Statement stmt, ResultSet rs) {
        try {
            if (rs != null) {
                rs.close();
            }
            if (stmt != null) {
                stmt.close();
            }
            if (conn != null) {
                conn.close();
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
}
  1. 查询学生信息的Servlet(QueryStudentServlet.java):
@WebServlet("/queryStudent")
public class QueryStudentServlet extends HttpServlet {
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        int currentPage = 1;
        int pageSize = 10;
        if (request.getParameter("currentPage") != null) {
            currentPage = Integer.parseInt(request.getParameter("currentPage"));
        }
        if (request.getParameter("pageSize") != null) {
            pageSize = Integer.parseInt(request.getParameter("pageSize"));
        }

        String name = request.getParameter("name");

        try {
            Connection conn = DBUtil.getConnection();
            String sql = "SELECT * FROM t_student WHERE 1=1";
            if (name != null && !name.trim().isEmpty()) {
                sql += " AND name LIKE '%" + name + "%'";
            }
            sql += " ORDER BY studentId ASC LIMIT ?, ?";
            PreparedStatement stmt = conn.prepareStatement(sql);
            stmt.setInt(1, (currentPage - 1) * pageSize);
            stmt.setInt(2, pageSize);
            ResultSet rs = stmt.executeQuery();

            List<Student> studentList = new ArrayList<>();
            while (rs.next()) {
                Student student = new Student();
                student.setId(rs.getInt("id"));
                student.setName(rs.getString("name"));
                student.setStudentId(rs.getString("studentId"));
                student.setGender(rs.getString("gender"));
                student.setMajor(rs.getString("major"));
                student.setPhoneNumber(rs.getString("phoneNumber"));
                student.setEmail(rs.getString("email"));
                studentList.add(student);
            }

            request.setAttribute("studentList", studentList);

            sql = "SELECT COUNT(*) FROM t_student WHERE 1=1";
            if (name != null && !name.trim().isEmpty()) {
                sql += " AND name LIKE '%" + name + "%'";
            }
            stmt = conn.prepareStatement(sql);
            rs = stmt.executeQuery();
            int totalRecords = 0;
            if (rs.next()) {
                totalRecords = rs.getInt(1);
            }

            int totalPages = (int) Math.ceil((double) totalRecords / pageSize);

            request.setAttribute("currentPage", currentPage);
            request.setAttribute("pageSize", pageSize);
            request.setAttribute("totalPages", totalPages);
            request.setAttribute("name", name);

            DBUtil.closeConnection(conn, stmt, rs);

            request.getRequestDispatcher("student.jsp").forward(request, response);
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
}
  1. 新增学生信息的Servlet(AddStudentServlet.java):
@WebServlet("/addStudent")
public class AddStudentServlet extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        String name = request.getParameter("name");
        String studentId = request.getParameter("studentId");
        String gender = request.getParameter("gender");
        String major = request.getParameter("major");
        String phoneNumber = request.getParameter("phoneNumber");
        String email = request.getParameter("email");

        try {
            Connection conn = DBUtil.getConnection();
            String sql = "SELECT COUNT(*) FROM t_student WHERE studentId = ?";
            PreparedStatement stmt = conn.prepareStatement(sql);
            stmt.setString(1, studentId);
            ResultSet rs = stmt.executeQuery();
            if (rs.next() && rs.getInt(1) > 0) {
                request.setAttribute("duplicateError", "学号已存在");
                request.getRequestDispatcher("add_student.jsp").forward(request, response);
            } else {
                sql = "INSERT INTO t_student (name, studentId, gender, major, phoneNumber, email) VALUES (?, ?, ?, ?, ?, ?)";
                stmt = conn.prepareStatement(sql);
                stmt.setString(1, name);
                stmt.setString(2, studentId);
                stmt.setString(3, gender);
                stmt.setString(4, major);
                stmt.setString(5, phoneNumber);
                stmt.setString(6, email);
                stmt.executeUpdate();

                DBUtil.closeConnection(conn, stmt, rs);

                response.sendRedirect("queryStudent");
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
}
  1. JSP页面(student.jsp):
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>学生信息</title>
    <style>
        table {
            border-collapse: collapse;
        }
        th, td {
            border: 1px solid black;
            padding: 5px;
        }
    </style>
</head>
<body>
    <h1>学生信息</h1>
    <form action="queryStudent" method="get">
        <input type="text" name="name" value="${name}" placeholder="请输入学生姓名">
        <input type="submit" value="查询">
    </form>
    <table>
        <tr>
            <th>学号</th>
            <th>姓名</th>
            <th>性别</th>
            <th>所属专业</th>
            <th>手机号码</th>
            <th>Email</th>
        </tr>
        <c:forEach var="student" items="${studentList}">
            <tr>
                <td>${student.studentId}</td>
                <td>${student.name}</td>
                <td>${student.gender}</td>
                <td>${student.major}</td>
                <td>${student.phoneNumber}</td>
                <td>${student.email}</td>
            </tr>
        </c:forEach>
    </table>
    <p>共 ${totalPages} 页,当前第 ${currentPage} 页</p>
    <p>
        <c:if test="${currentPage > 1}">
            <a href="queryStudent?currentPage=${currentPage-1}&pageSize=${pageSize}&name=${name}">上一页</a>
        </c:if>
        <c:if test="${currentPage < totalPages}">
            <a href="queryStudent?currentPage=${currentPage+1}&pageSize=${pageSize}&name=${name}">下一页</a>
        </c:if>
    </p>
    <a href="add_student.jsp">新增学生</a>
</body>
</html>
  1. 新增学生页面(add_student.jsp):
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>新增学生</title>
</head>
<body>
    <h1>新增学生</h1>
    <form action="addStudent" method="post">
        <label for="name">姓名:</label>
        <input type="text" id="name" name="name" required><br>
        <label for="studentId">学号:</label>
        <input type="text" id="studentId" name="studentId" required><br>
        <label for="gender">性别:</label>
        <input type="radio" id="gender" name="gender" value="男" required>男
        <input type="radio" id="gender" name="gender" value="女" required>女<br>
        <label for="major">所属专业:</label>
        <select id="major" name="major" required>
            <option value="计算机科学与技术">计算机科学与技术</option>
            <option value="软件工程">软件工程</option>
            <option value="信息安全">信息安全</option>
        </select><br>
        <label for="phoneNumber">手机号码:</label>
        <input type="text" id="phoneNumber" name="phoneNumber" required><br>
        <label for="email">Email:</label>
        <input type="email" id="email" name="email" required><br>
        <input type="submit" value="提交">
        <input type="button" value="返回" onclick="window.history.back()">
    </form>
    <p style="color: red">${duplicateError}</p>
</body>
</html>

以上代码实现了分页查询学生信息和新增学生功能。在数据库中创建名为student_course的数据库,并按规范设计学生表和专业表


原文地址: https://www.cveoy.top/t/topic/hWQ5 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录