MVC设计模式、JSP开发模式、三层架构&MVC练习学生信息管理系统

MVC设计模式、JSP开发模式、三层架构&MVC练习学生信息管理系统

本文将介绍MVC设计模式、JSP开发模式、三层架构和MVC练习的基本概念,并演示如何使用这些技术来构建一个学生信息管理系统。该系统将包括数据库准备、查询、增加、删除、更新和分页功能。

MVC设计模式

MVC是一种软件架构模式,将应用程序分为三个部分:模型(Model)、视图(View)和控制器(Controller)。MVC模式的目标是将应用程序的数据、用户界面和控制逻辑分离,以实现更好的代码组织、更好的可维护性和更好的可重用性。

在MVC模式中,Model表示应用程序的数据和业务逻辑,View表示应用程序的用户界面,Controller表示应用程序的控制逻辑。这三个部分相互独立,彼此之间只通过接口通信。这种分离使得应用程序的每个部分都可以独立变更,而不会影响到其他部分。

JSP开发模式

JSP(JavaServer Pages)是一种动态网页技术,它允许将Java代码嵌入到HTML页面中。JSP开发模式是一种使用JSP的软件开发模式,它将应用程序分为多个模块,每个模块都使用JSP来实现。

在JSP开发模式中,每个模块都包含一个JSP页面,该页面负责显示数据和处理用户输入。每个模块都可以独立开发和测试,然后通过一个控制器将它们组合起来形成一个完整的应用程序。

三层架构

三层架构是一种软件架构模式,将应用程序分为三个部分:表示层(Presentation Layer)、业务逻辑层(Business Logic Layer)和数据访问层(Data Access Layer)。三层架构的目标是将应用程序的不同方面分离,以实现更好的代码组织和可维护性。

在三层架构中,表示层负责显示数据和处理用户输入,业务逻辑层负责应用程序的业务逻辑,数据访问层负责与数据库交互。这三个部分相互独立,彼此之间只通过接口通信。这种分离使得应用程序的每个部分都可以独立变更,而不会影响到其他部分。

MVC练习

为了练习MVC模式和JSP开发模式,我们将开发一个简单的学生信息管理系统。该系统将包括一个表示层、一个业务逻辑层和一个数据访问层。我们将使用MySQL数据库来存储学生信息。

数据库准备

首先,我们需要创建一个名为“student”的数据库,以存储学生信息。下面是用于创建数据库和表的SQL语句:

CREATE DATABASE student;

USE student;

CREATE TABLE IF NOT EXISTS `student` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(50) NOT NULL,
  `gender` varchar(10) NOT NULL,
  `age` int(11) NOT NULL,
  `major` varchar(50) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

查询功能

我们将在表示层中实现查询功能。下面是查询页面的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>
    <form action="StudentServlet" method="post">
        <input type="hidden" name="action" value="query" />
        姓名:<input type="text" name="name" />
        <input type="submit" value="查询" />
    </form>
</body>
</html>

在这个页面中,我们使用一个表单来接收用户输入的查询条件。当用户点击“查询”按钮时,表单将提交到StudentServlet中,并传递一个名为“action”的参数,值为“query”。

下面是StudentServlet的代码:

package com.example.servlet;

import java.io.IOException;
import java.util.List;

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.example.dao.StudentDao;
import com.example.model.Student;

@WebServlet("/StudentServlet")
public class StudentServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;

    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        String action = request.getParameter("action");

        if ("query".equals(action)) {
            String name = request.getParameter("name");
            List<Student> students = StudentDao.query(name);
            request.setAttribute("students", students);
            request.getRequestDispatcher("query.jsp").forward(request, response);
        }
    }
}

在这个Servlet中,我们首先从请求中获取名为“action”的参数,然后根据参数值执行不同的操作。如果参数值为“query”,则从请求中获取名为“name”的参数,然后使用StudentDao查询学生信息,并将结果存储在请求属性“students”中。最后,将请求转发到一个名为“query.jsp”的JSP页面,该页面将显示查询结果。

下面是query.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>
    <table>
        <tr>
            <th>ID</th>
            <th>姓名</th>
            <th>性别</th>
            <th>年龄</th>
            <th>专业</th>
        </tr>
        <c:forEach items="${students}" var="student">
            <tr>
                <td>${student.id}</td>
                <td>${student.name}</td>
                <td>${student.gender}</td>
                <td>${student.age}</td>
                <td>${student.major}</td>
            </tr>
        </c:forEach>
    </table>
</body>
</html>

在这个JSP页面中,我们使用<c:forEach>标签循环显示查询结果。每个结果将显示在一个HTML表格中。

增加功能

我们将在表示层中实现增加功能。下面是增加页面的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>
    <form action="StudentServlet" method="post">
        <input type="hidden" name="action" value="add" />
        姓名:<input type="text" name="name" /><br />
        性别:<input type="radio" name="gender" value="男" checked="checked" /><input type="radio" name="gender" value="女" /><br />
        年龄:<input type="text" name="age" /><br />
        专业:<input type="text" name="major" /><br />
        <input type="submit" value="提交" />
    </form>
</body>
</html>

在这个页面中,我们使用一个表单来接收用户输入的新增信息。当用户点击“提交”按钮时,表单将提交到StudentServlet中,并传递一个名为“action”的参数,值为“add”。

下面是StudentServlet的代码:

package com.example.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.example.dao.StudentDao;
import com.example.model.Student;

@WebServlet("/StudentServlet")
public class StudentServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;

    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        String action = request.getParameter("action");

        if ("add".equals(action)) {
            String name = request.getParameter("name");
            String gender = request.getParameter("gender");
            int age = Integer.parseInt(request.getParameter("age"));
            String major = request.getParameter("major");
            Student student = new Student(name, gender, age, major);
            StudentDao.add(student);
            response.sendRedirect("add.jsp");
        }
    }
}

在这个Servlet中,我们首先从请求中获取名为“action”的参数,然后根据参数值执行不同的操作。如果参数值为“add”,则从请求中获取新增信息,然后使用StudentDao将新增信息插入到数据库中。最后,将请求重定向到一个名为“add.jsp”的JSP页面,该页面将显示新增成功的消息。

删除功能

我们将在表示层中实现删除功能。下面是删除页面的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>
    <form action="StudentServlet" method="post">
        <input type="hidden" name="action" value="delete" />
        ID:<input type="text" name="id" />
        <input type="submit" value="删除" />
    </form>
</body>
</html>

在这个页面中,我们使用一个表单来接收用户输入的删除条件。当用户点击“删除”按钮时,表单将提交到StudentServlet中,并传递一个名为“action”的参数,值为“delete”。

下面是StudentServlet的代码:

package com.example.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.example.dao.StudentDao;

@WebServlet("/StudentServlet")
public class StudentServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;

    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        String action = request.getParameter("action");

        if ("delete".equals(action)) {
            int id = Integer.parseInt(request.getParameter("id"));
            StudentDao.delete(id);
            response.sendRedirect("delete.jsp");
        }
    }
}

在这个Servlet中,我们首先从请求中获取名为“action”的参数,然后根据参数值执行不同的操作。如果参数值为“delete”,则从请求中获取删除条件,然后使用StudentDao将符合条件的学生信息从数据库中删除。最后,将请求重定向到一个名为“delete.jsp”的JSP页面,该页面将显示删除成功的消息。

更新功能

我们将在表示层中实现更新功能。下面是更新页面的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>
    <form action="StudentServlet" method="post">
        <input type="hidden" name="action" value="update" />
        ID:<input type="text" name="id" /><br />
        姓名:<input type="text" name="name" /><br />
        性别:<input type="radio" name="gender" value="男" checked="checked" /><input type="radio" name="gender" value="女" /><br />
        年龄:<input type="text" name="age" /><br />
        专业:<input type="text" name="major" /><br />
        <input type="submit" value="提交" />
    </form>
</body>
</html>

在这个页面中,我们使用一个表单来接收用户输入的更新信息。当用户点击“提交”按钮时,表单将提交到StudentServlet中,并传递一个名为“action”的参数,值为“update”。

下面是StudentServlet的代码:

package com.example.servlet;

import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

互联小助手

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值