首页
学习
活动
专区
圈层
工具
发布

jsp学生管理系统代码

JSP(Java Server Pages)是一种基于Java技术的动态网页开发技术,它允许开发者在HTML或XML等静态页面中嵌入Java代码,从而实现动态内容的生成和处理。下面是一个简单的JSP学生管理系统的代码示例,包括学生信息的增删改查功能。

1. 项目结构

代码语言:txt
复制
StudentManagementSystem/
├── WEB-INF/
│   ├── classes/
│   │   └── com/
│   │       └── example/
│   │           ├── StudentServlet.java
│   │           └── StudentDAO.java
│   └── web.xml
├── index.jsp
├── addStudent.jsp
├── editStudent.jsp
└── viewStudents.jsp

2. 数据库表设计

假设我们有一个简单的学生表 students

代码语言:txt
复制
CREATE TABLE students (
    id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(100),
    age INT,
    email VARCHAR(100)
);

3. Java类

Student.java

代码语言:txt
复制
package com.example;

public class Student {
    private int id;
    private String name;
    private int age;
    private String email;

    // Getters and Setters
}

StudentDAO.java

代码语言:txt
复制
package com.example;

import java.sql.*;
import java.util.ArrayList;
import java.util.List;

public class StudentDAO {
    private Connection getConnection() throws SQLException {
        return DriverManager.getConnection("jdbc:mysql://localhost:3306/studentdb", "root", "password");
    }

    public List<Student> getAllStudents() {
        List<Student> students = new ArrayList<>();
        try (Connection conn = getConnection();
             Statement stmt = conn.createStatement();
             ResultSet rs = stmt.executeQuery("SELECT * FROM students")) {
            while (rs.next()) {
                Student student = new Student();
                student.setId(rs.getInt("id"));
                student.setName(rs.getString("name"));
                student.setAge(rs.getInt("age"));
                student.setEmail(rs.getString("email"));
                students.add(student);
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return students;
    }

    public void addStudent(Student student) {
        try (Connection conn = getConnection();
             PreparedStatement ps = conn.prepareStatement("INSERT INTO students(name, age, email) VALUES(?, ?, ?)")) {
            ps.setString(1, student.getName());
            ps.setInt(2, student.getAge());
            ps.setString(3, student.getEmail());
            ps.executeUpdate();
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }

    public void updateStudent(Student student) {
        try (Connection conn = getConnection();
             PreparedStatement ps = conn.prepareStatement("UPDATE students SET name=?, age=?, email=? WHERE id=?")) {
            ps.setString(1, student.getName());
            ps.setInt(2, student.getAge());
            ps.setString(3, student.getEmail());
            ps.setInt(4, student.getId());
            ps.executeUpdate();
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }

    public void deleteStudent(int id) {
        try (Connection conn = getConnection();
             PreparedStatement ps = conn.prepareStatement("DELETE FROM students WHERE id=?")) {
            ps.setInt(1, id);
            ps.executeUpdate();
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
}

StudentServlet.java

代码语言:txt
复制
package com.example;

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 java.io.IOException;
import java.util.List;

@WebServlet("/students")
public class StudentServlet extends HttpServlet {
    private StudentDAO studentDAO = new StudentDAO();

    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        String action = request.getParameter("action");
        if (action == null) {
            action = "view";
        }

        switch (action) {
            case "view":
                List<Student> students = studentDAO.getAllStudents();
                request.setAttribute("students", students);
                request.getRequestDispatcher("viewStudents.jsp").forward(request, response);
                break;
            case "add":
                request.getRequestDispatcher("addStudent.jsp").forward(request, response);
                break;
            case "edit":
                int id = Integer.parseInt(request.getParameter("id"));
                // Fetch student details and forward to edit page
                break;
            case "delete":
                int studentId = Integer.parseInt(request.getParameter("id"));
                studentDAO.deleteStudent(studentId);
                response.sendRedirect(request.getContextPath() + "/students");
                break;
            default:
                response.sendRedirect(request.getContextPath() + "/students");
        }
    }

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        String name = request.getParameter("name");
        int age = Integer.parseInt(request.getParameter("age"));
        String email = request.getParameter("email");

        Student student = new Student();
        student.setName(name);
        student.setAge(age);
        student.setEmail(email);

        if (request.getParameter("id") == null) {
            studentDAO.addStudent(student);
        } else {
            student.setId(Integer.parseInt(request.getParameter("id")));
            studentDAO.updateStudent(student);
        }

        response.sendRedirect(request.getContextPath() + "/students");
    }
}

4. JSP页面

index.jsp

代码语言:txt
复制
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Student Management System</title>
</head>
<body>
    <h1>Student Management System</h1>
    <a href="students?action=add">Add Student</a>
    <a href="students">View Students</a>
</body>
</html>

addStudent.jsp

代码语言:txt
复制
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Add Student</title>
</head>
<body>
    <h1>Add Student</h1>
    <form action="students" method="post">
        Name: <input type="text" name="name"><br>
        Age: <input type="text" name="age"><br>
        Email: <input type="text" name="email"><br>
        <input type="submit" value="Add Student">
    </form>
</body>
</html>

editStudent.jsp

代码语言:txt
复制
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Edit Student</title>
</head>
<body>
    <h1>Edit Student</h1>
    <!-- Fetch student details and populate the form -->
    <form action="students" method="post">
        <input type="hidden" name="id" value="${student.id}">
        Name: <input type="text" name="name" value="${student.name}"><br>
        Age: <input type="text" name="age" value="${student.age}"><br>
        Email: <input type="text" name="email" value="${student.email}"><br>
        <input type="submit" value="Update Student">
    </form>
</body>
</html>

viewStudents.jsp

代码语言:txt
复制
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<head>
    <title>View Students</title>
</head>
<body>
    <h1>View Students</h1>
    <table border="1">
        <tr>
            <th>ID</th>
            <th>Name</th>
            <th>Age</th>
            <th>Email</th>
            <th>Actions</th>
        </tr>
        <c:forEach items="${students}" var="student">
            <tr>
                <td>${student.id}</td>
                <td>${student.name}</td>
                <td>${student.age}</td>
                <td>${student.email}</td>
                <td>
                    <a href="students?action=edit&id=${student.id}">Edit</a>
                    <a href="students?action=delete&id=${student.id}">Delete</a>
                </td>
            </tr>
        </c:forEach>
    </table>
</body>
</html>

5. web.xml

代码语言:txt
复制
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
    version="3.1">
    <servlet>
        <servlet-name>StudentServlet</servlet-name>
        <servlet-class>com.example.StudentServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>StudentServlet</servlet-name>
        <url-pattern>/students</url-pattern>
    </servlet-mapping>
</web-app>

优势与应用场景

  1. 优势
    • 跨平台:基于Java技术,具有良好的跨平台性。
    • 易于集成:可以方便地与现有的Java应用集成。
    • 动态内容生成:通过嵌入Java代码,可以实现动态内容的生成和处理。
    • 丰富的标签库:JSTL等标签库提供了丰富的前端标签,简化了页面开发。
  • 应用场景
    • 企业级应用:适合构建复杂的企业级Web应用。
    • 教育系统:如学生管理系统、课程管理系统等。
    • 电子商务平台:商品管理、订单处理等。

常见问题及解决方法

  1. 数据库连接问题
    • 问题:无法连接到数据库。
    • 解决方法:检查数据库URL、用户名和密码是否正确,确保数据库服务正在运行。
  • SQL注入问题
    • 问题:用户输入可能导致SQL注入攻击。
    • 解决方法:使用PreparedStatement代替Statement,避免直接拼接SQL语句。
  • 性能问题
    • 问题:系统响应慢,性能不佳。
    • 解决方法:优化SQL查询,使用缓存机制,减少数据库访问次数。

希望这个示例能帮助你理解JSP学生管理系统的基本实现和相关概念。如果有具体的问题或需要进一步的帮助,请提供详细信息。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

没有搜到相关的文章

领券