一文带你吃透JSP增删改查实战案例详细解读

本文将介绍JSP的增删改查实战案例,包含如下内容:

一文带你吃透JSP增删改查实战案例详细解读

概述

本文将介绍JSP的增删改查实战案例,包含如下内容:

  1. 数据库的创建与数据表的设计
  2. JSP页面的开发
  3. Servlet的编写
  4. 实现增删改查功能

数据库的创建与数据表的设计

在本案例中,我们将以MySQL数据库为例进行数据库的创建和数据表的设计,具体步骤如下:

创建数据库

打开MySQL客户端,输入以下命令创建一个名为“hospital”的数据库:

CREATE DATABASE hospital;

创建数据表

在“hospital”数据库中创建一个名为“patient”的数据表,包含以下字段:

  • id:患者ID,类型为int,主键
  • name:患者姓名,类型为varchar(20)
  • age:患者年龄,类型为int
  • gender:患者性别,类型为varchar(4)
  • department:患者所在科室,类型为varchar(20)

以下是创建数据表的SQL语句:

USE hospital;
CREATE TABLE patient (
  id INT PRIMARY KEY AUTO_INCREMENT,
  name VARCHAR(20) NOT NULL,
  age INT NOT NULL,
  gender VARCHAR(4) NOT NULL,
  department VARCHAR(20) NOT NULL
);

JSP页面的开发

在本案例中,我们将开发四个JSP页面,分别对应增删改查四个功能。

页面1:新增患者信息

该页面包含一个表单,用户可以在表单中输入患者信息,点击“提交”按钮后将信息插入数据库中。

以下是页面1的代码示例:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>新增患者信息</title>
</head>
<body>
    <h1>新增患者信息</h1>
    <form action="addPatient" method="post">
        <p><label>姓名:<input type="text" name="name"></label></p>
        <p><label>年龄:<input type="text" name="age"></label></p>
        <p><label>性别:<input type="text" name="gender"></label></p>
        <p><label>科室:<input type="text" name="department"></label></p>
        <p><input type="submit" value="提交"></p>
    </form>
</body>
</html>

页面2:查看患者列表

该页面包含一个表格,显示数据库中所有患者的信息。

以下是页面2的代码示例:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>患者列表</title>
</head>
<body>
    <h1>患者列表</h1>
    <table>
        <thead>
            <tr>
                <th>ID</th>
                <th>姓名</th>
                <th>年龄</th>
                <th>性别</th>
                <th>科室</th>
            </tr>
        </thead>
        <tbody>
            <% 
                List<Patient> patients = (List<Patient>)request.getAttribute("patients");
                for (Patient patient : patients) {
            %>
            <tr>
                <td><%=patient.getId()%></td>
                <td><%=patient.getName()%></td>
                <td><%=patient.getAge()%></td>
                <td><%=patient.getGender()%></td>
                <td><%=patient.getDepartment()%></td>
            </tr>
            <% } %>
        </tbody>
    </table>
</body>
</html>

页面3:修改患者信息

该页面包含一个表单,用户可以在表单中修改患者信息,点击“提交”按钮后将信息更新到数据库中。

以下是页面3的代码示例:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>修改患者信息</title>
</head>
<body>
    <h1>修改患者信息</h1>
    <form action="updatePatient" method="post">
        <input type="hidden" name="id" value="<%=patient.getId()%>">
        <p><label>姓名:<input type="text" name="name" value="<%=patient.getName()%>"></label></p>
        <p><label>年龄:<input type="text" name="age" value="<%=patient.getAge()%>"></label></p>
        <p><label>性别:<input type="text" name="gender" value="<%=patient.getGender()%>"></label></p>
        <p><label>科室:<input type="text" name="department" value="<%=patient.getDepartment()%>"></label></p>
        <p><input type="submit" value="提交"></p>
    </form>
</body>
</html>

页面4:删除患者信息

该页面包含一个表单,用户可以在表单中输入患者ID,点击“提交”按钮后将该患者信息从数据库中删除。

以下是页面4的代码示例:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>删除患者信息</title>
</head>
<body>
    <h1>删除患者信息</h1>
    <form action="deletePatient" method="post">
        <p><label>患者ID:<input type="text" name="id"></label></p>
        <p><input type="submit" value="提交"></p>
    </form>
</body>
</html>

Servlet的编写

在本案例中,我们将编写一个Servlet类,通过该类实现对数据库的增删改查操作。

以下是Servlet类的主要代码:

@WebServlet(name = "PatientServlet", urlPatterns = {"/listPatients", "/addPatient", "/getPatient", "/updatePatient", "/deletePatient"})
public class PatientServlet extends HttpServlet {
    private PatientDAO patientDAO;

    @Override
    public void init() throws ServletException {
        super.init();
        patientDAO = new PatientDAOImpl();
    }

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        String servletPath = request.getServletPath();
        if ("/addPatient".equals(servletPath)) {
            doAddPatient(request, response);
        } else if ("/updatePatient".equals(servletPath)) {
            doUpdatePatient(request, response);
        } else if ("/deletePatient".equals(servletPath)) {
            doDeletePatient(request, response);
        }
    }

    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        String servletPath = request.getServletPath();
        if ("/listPatients".equals(servletPath)) {
            doListPatients(request, response);
        } else if ("/getPatient".equals(servletPath)) {
            doGetPatient(request, response);
        }
    }

    private void doAddPatient(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        String name = request.getParameter("name");
        int age = Integer.parseInt(request.getParameter("age"));
        String gender = request.getParameter("gender");
        String department = request.getParameter("department");
        Patient patient = new Patient(name, age, gender, department);
        patientDAO.add(patient);
        response.sendRedirect(request.getContextPath() + "/listPatients");
    }

    // 其余方法省略
}

实现增删改查功能

通过以上代码,我们已经可以实现对数据库的增删改操作了。最后的步骤是将上述四个JSP页面进行路由与Servlet类绑定,使得点击对应的按钮能够访问到对应的Servlet方法,并且将查询到的结果渲染到JSP页面上。

其中,查询操作需要实现分页功能,这里给出一个简单的实现示例:

private void doListPatients(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    int page = request.getParameter("page") == null ? 1 : Integer.parseInt(request.getParameter("page"));
    int size = 10;
    List<Patient> patients = patientDAO.list((page - 1) * size, size);
    request.setAttribute("patients", patients);
    request.getRequestDispatcher("/listPatients.jsp").forward(request, response);
}

至此,JSP的增删改查实战案例就介绍完了,以上是一个简单的示例,供大家学习参考。

本文标题为:一文带你吃透JSP增删改查实战案例详细解读

基础教程推荐