以下是一个示例的JSP+Servlet代码实现大学生管理系统的部分功能:\n\n1. 学生类(Student.java):\n\njava\npublic class Student {\n private int id;\n private String name;\n private String studentId;\n private String gender;\n private String major;\n private String phoneNumber;\n private String email;\n\n // 构造方法和getter/setter方法省略\n}\n\n\n2. 数据库操作类(DBUtil.java):\n\njava\npublic class DBUtil {\n private static final String URL = "jdbc:mysql://localhost:3306/student_course?useUnicode=true&characterEncoding=utf8mb4";\n private static final String USERNAME = "root";\n private static final String PASSWORD = "password";\n\n public static Connection getConnection() throws SQLException {\n return DriverManager.getConnection(URL, USERNAME, PASSWORD);\n }\n\n public static void closeConnection(Connection conn, Statement stmt, ResultSet rs) {\n try {\n if (rs != null) {\n rs.close();\n }\n if (stmt != null) {\n stmt.close();\n }\n if (conn != null) {\n conn.close();\n }\n } catch (SQLException e) {\n e.printStackTrace();\n }\n }\n}\n\n\n3. 查询学生信息的Servlet(QueryStudentServlet.java):\n\njava\n@WebServlet("/queryStudent")\npublic class QueryStudentServlet extends HttpServlet {\n protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {\n int currentPage = 1;\n int pageSize = 10;\n if (request.getParameter("currentPage") != null) {\n currentPage = Integer.parseInt(request.getParameter("currentPage"));\n }\n if (request.getParameter("pageSize") != null) {\n pageSize = Integer.parseInt(request.getParameter("pageSize"));\n }\n\n String name = request.getParameter("name");\n\n try {\n Connection conn = DBUtil.getConnection();\n String sql = "SELECT * FROM t_student WHERE 1=1";\n if (name != null && !name.trim().isEmpty()) {\n sql += " AND name LIKE '%" + name + "%'";\n }\n sql += " ORDER BY studentId ASC LIMIT ?, ?";\n PreparedStatement stmt = conn.prepareStatement(sql);\n stmt.setInt(1, (currentPage - 1) * pageSize);\n stmt.setInt(2, pageSize);\n ResultSet rs = stmt.executeQuery();\n\n List<Student> studentList = new ArrayList<>();\n while (rs.next()) {\n Student student = new Student();\n student.setId(rs.getInt("id"));\n student.setName(rs.getString("name"));\n student.setStudentId(rs.getString("studentId"));\n student.setGender(rs.getString("gender"));\n student.setMajor(rs.getString("major"));\n student.setPhoneNumber(rs.getString("phoneNumber"));\n student.setEmail(rs.getString("email"));\n studentList.add(student);\n }\n\n request.setAttribute("studentList", studentList);\n\n sql = "SELECT COUNT(*) FROM t_student WHERE 1=1";\n if (name != null && !name.trim().isEmpty()) {\n sql += " AND name LIKE '%" + name + "%'";\n }\n stmt = conn.prepareStatement(sql);\n rs = stmt.executeQuery();\n int totalRecords = 0;\n if (rs.next()) {\n totalRecords = rs.getInt(1);\n }\n\n int totalPages = (int) Math.ceil((double) totalRecords / pageSize);\n\n request.setAttribute("currentPage", currentPage);\n request.setAttribute("pageSize", pageSize);\n request.setAttribute("totalPages", totalPages);\n request.setAttribute("name", name);\n\n DBUtil.closeConnection(conn, stmt, rs);\n\n request.getRequestDispatcher("student.jsp").forward(request, response);\n } catch (SQLException e) {\n e.printStackTrace();\n }\n }\n}\n\n\n4. 新增学生信息的Servlet(AddStudentServlet.java):\n\njava\n@WebServlet("/addStudent")\npublic class AddStudentServlet extends HttpServlet {\n protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {\n String name = request.getParameter("name");\n String studentId = request.getParameter("studentId");\n String gender = request.getParameter("gender");\n String major = request.getParameter("major");\n String phoneNumber = request.getParameter("phoneNumber");\n String email = request.getParameter("email");\n\n try {\n Connection conn = DBUtil.getConnection();\n String sql = "SELECT COUNT(*) FROM t_student WHERE studentId = ?";\n PreparedStatement stmt = conn.prepareStatement(sql);\n stmt.setString(1, studentId);\n ResultSet rs = stmt.executeQuery();\n if (rs.next() && rs.getInt(1) > 0) {\n request.setAttribute("duplicateError", "学号已存在");\n request.getRequestDispatcher("add_student.jsp").forward(request, response);\n } else {\n sql = "INSERT INTO t_student (name, studentId, gender, major, phoneNumber, email) VALUES (?, ?, ?, ?, ?, ?)";\n stmt = conn.prepareStatement(sql);\n stmt.setString(1, name);\n stmt.setString(2, studentId);\n stmt.setString(3, gender);\n stmt.setString(4, major);\n stmt.setString(5, phoneNumber);\n stmt.setString(6, email);\n stmt.executeUpdate();\n\n DBUtil.closeConnection(conn, stmt, rs);\n\n response.sendRedirect("queryStudent");\n }\n } catch (SQLException e) {\n e.printStackTrace();\n }\n }\n}\n\n\n5. JSP页面(student.jsp):\n\njsp\n<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>\n<!DOCTYPE html>\n<html>\n<head>\n <meta charset="UTF-8">\n <title>学生信息</title>\n <style>\n table {\n border-collapse: collapse;\n }\n th, td {\n border: 1px solid black;\n padding: 5px;\n }\n </style>\n</head>\n<body>\n <h1>学生信息</h1>\n <form action="queryStudent" method="get">\n <input type="text" name="name" value="${name}" placeholder="请输入学生姓名">\n <input type="submit" value="查询">\n </form>\n <table>\n <tr>\n <th>学号</th>\n <th>姓名</th>\n <th>性别</th>\n <th>所属专业</th>\n <th>手机号码</th>\n <th>Email</th>\n </tr>\n <c:forEach var="student" items="${studentList}">\n <tr>\n <td>${student.studentId}</td>\n <td>${student.name}</td>\n <td>${student.gender}</td>\n <td>${student.major}</td>\n <td>${student.phoneNumber}</td>\n <td>${student.email}</td>\n </tr>\n </c:forEach>\n </table>\n <p>共 ${totalPages} 页,当前第 ${currentPage} 页</p>\n <p>\n <c:if test="${currentPage > 1}">\n <a href="queryStudent?currentPage=${currentPage-1}&pageSize=${pageSize}&name=${name}">上一页</a>\n </c:if>\n <c:if test="${currentPage < totalPages}">\n <a href="queryStudent?currentPage=${currentPage+1}&pageSize=${pageSize}&name=${name}">下一页</a>\n </c:if>\n </p>\n <a href="add_student.jsp">新增学生</a>\n</body>\n</html>\n\n\n6. 新增学生页面(add_student.jsp):\n\njsp\n<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>\n<!DOCTYPE html>\n<html>\n<head>\n <meta charset="UTF-8">\n <title>新增学生</title>\n</head>\n<body>\n <h1>新增学生</h1>\n <form action="addStudent" method="post">\n <label for="name">姓名:</label>\n <input type="text" id="name" name="name" required><br>\n <label for="studentId">学号:</label>\n <input type="text" id="studentId" name="studentId" required><br>\n <label for="gender">性别:</label>\n <input type="radio" id="gender" name="gender" value="男" required>男\n <input type="radio" id="gender" name="gender" value="女" required>女<br>\n <label for="major">所属专业:</label>\n <select id="major" name="major" required>\n <option value="计算机科学与技术">计算机科学与技术</option>\n <option value="软件工程">软件工程</option>\n <option value="信息安全">信息安全</option>\n </select><br>\n <label for="phoneNumber">手机号码:</label>\n <input type="text" id="phoneNumber" name="phoneNumber" required><br>\n <label for="email">Email:</label>\n <input type="email" id="email" name="email" required><br>\n <input type="submit" value="提交">\n <input type="button" value="返回" onclick="window.history.back()">\n </form>\n <p style="color: red">${duplicateError}</p>\n</body>\n</html>\n\n\n以上代码实现了分页查询学生信息和新增学生功能。在数据库中创建名为student_course的数据库,并按规范设计学生表和专业表。


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

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