您的位置 首页 java

视频讲解学员信息管理系统升级版

视频讲解学员信息管理系统升级版

升级前的项目介绍:

项目需求

  • 使用 EL + JSTL 表达式、过滤器和监听器对“学生信息管理系统”进行技术升级。
  • 使用 Cookie 实现一周内免登录。
  • 为学生表增加字段:所属班级。
  • 增加班级管理。班级信息如下:班级名称、年级、班主任名称、班级口号 、班级人数。可以创建班级、修改班级信息、删除班级(前提:保证班级内没有关联学生)、班级查询。
  • 要求部署到 Linux 系统中,通过本地浏览器能正常访问


项目运行

使用 VMware 运行 Linux 虚拟机 CentOS 7,配置 JDK 版本为 11,部署配置 Tomcat 8,下载安装 MySQL 5.7.31 服务器。

使用 Xshell 终端来操控虚拟机,和使用 Xftp 来传输文件到虚拟机中。

使用图形化界面访问虚拟机中的 MySQL 服务,并运行项目的数据库 sql 代码,配置好后台数据。

使用 IDEA 打开 java_web_project 项目代码,根据虚拟机中数据库的信息配置文件 resources/druid.properties;然后运行项目获得项目的 war 包,通过 Xftp 工具将 war 包放在虚拟机的 tomcat/webapp 目录。

通过 Xshell 终端来重启 Tomcat 服务器。

打开浏览器输入虚拟机的 ip 地址 和 tomcat 的端口号跟上 war 包名即可访问。


项目升级介绍

EL 和 JSTL

使用了 EL 和 JSTL 简化代替 JSP 页面上的 Java 代码。

Filter

增加了过滤器 LoginFilter

  • 拦截所有页面,然后根据登录信息判断是否放行。
  • 如果是 css 或 js 文件,则放行;如果没有登录且请求路径不是登录页面,则跳转到登录页面;如果已经登录且请求路径是登录页面,则直接跳转到主页;剩余的情况,则放行。

Cookie

修改 LoginServlet

登录成功后,使用 cookie 保存用户登录信息并设置其使用期限为一周。

修改 LogoutServlet

从 cookie 中删除登录信息。

Listener

增加了监听器 MyListener:监听请求初始化事件,如果 session 中没有登录信息,则尝试从 cookie 中获取登录信息并保存到 session 中。

前端页面跳转逻辑设计

  • 主页命名为 main.jsp;学生管理的前端页面命名为 student.jsp;班级管理的前端页面命名为 class.jsp。
  • 登录成功后,跳转到 main.jsp 主页;主页可选择的功能有三个,分别为“退出登录”、“跳转到学生管理页面”、“跳转到班级管理页面”。
  • 学生管理页面有返回到主页的功能;班级管理页面也有返回到主页的功能。

MySQL 数据库

更新学员表

为学员表 student 增加了所属班级 ID 的字段 cid,并设置此字段为外键对应班级表的主键 id。

增加班级表

班级表 class 的字段有:班号(主键)、班级名称、年级、班主任名称、班级口号、班级人数。

增加存储过程

更新班级表的存储过程 proc_upd_class:参数为旧班号和新班号,旧班号对应的班级人数减一,新班号对应的班级人数加一。

增加触发器

  • 增加学员触发器 trigger_add_student:当学员被增加,其对应的班级人数也加一。
  • 删除学员触发器 trigger_del_student:当学员被删除,其对应的班级人数也减一。
  • 更新学员触发器 trigger_upd_student:如果学员的所属班级有更新,则调用更新班级表的存储过程。

Java Bean

更新学员类

为学员类 Student 增加新的变量 cid 代表其所属的班号,并为之设置 setter 和 getter,更新 toString 方法。

新增班级类

班级类 ClassBean 与数据库的班级表对应,创建变量名,并为之设置 setter 和 getter,以及 toString 方法。

Dao 数据访问层

修改 StudentDaoImpl

  • 更改增加学员 addStudent 方法的 sql 语句,增加一个班号的参数;
  • 更改更新学员 updateStudentById 方法的 sql 语句,增加一个班号的参数。

新增 ClassBeanDao 和 ClassBeanDaoImpl 班级表数据库访问层

  • 新增根据班号查找班级的方法 getClassBeanById。
  • 新增根据查询条件获取班级列表的方法 getClassBeansByCondition。
  • 新增增加班级的方法 addClassBean。
  • 新增根据班号删除班级 removeClassBeanById。
  • 新增根据班号更新班级信息 updateClassBeanById。

Factory 工厂类

新增 ClassBeanDaoFactory

通过静态工厂的方法获取班级的数据库访问层对象 ClassBeanDao。

Service 业务逻辑层

新增 ClassBeanService

  • 新增检查班号是否存在的服务 checkIfClassBeanIdExists。
  • 新增根据查询条件获取班级列表的服务 findClassBeanService。
  • 新增增加班级的服务 addClassBeanService。
  • 新增根据班号删除班级的服务 removeClassBeanService。
  • 新增根据班号更新班级的服务 updateClassBeanService。

Test 测试类

修改 StudentDaoTest

  • 修改测试根据条件查询总记录数 testGetTotalCount 方法:条件查询中增加班号的值;
  • 修改测试增加学员信息 testAddStudent 方法:新建的学员设置班号的值;
  • 修改测试根据学号更新学员信息 testUpdateStudentById 方法:新建的学员设置班号的值。

修改 StudentServiceTest

  • 修改测试新增学生的服务 testAddStudentService 方法:新建的学员设置班号的值;
  • 修改测试更新学生的服务 testUpdateStudentService 方法:新建的学员设置班号的值。

新增 ClassBeanDaoTest

  • 新增测试根据班号查找班级 testGetClassBeanById 方法。
  • 新增测试根据查询条件获取班级列表 testGetClassBeansByCondition 方法。
  • 新增测试增加班级 testAddClassBean 方法。
  • 新增测试根据班号删除班级 testRemoveClassBeanById 方法。
  • 新增根据班号更新班级信息 testUpdateClassBeanById 方法。

新增 ClassBeanServiceTest

  • 新增测试检查班号是否存在的服务 testCheckIfClassBeanIdExists 方法。
  • 新增测试根据查询条件获取班级列表的服务 testFindClassBeanService 方法。
  • 新增测试新增班级的服务 testAddClassBeanService 方法。
  • 新增测试根据班号删除班级的服务 testRemoveClassBeanService 方法。
  • 新增测试根据班号更新班级的服务 testUpdateClassBeanService 方法。

Servlet 控制器

修改 AddStudentServlet

增加获取班号的参数,并设置其为学生类对象的班号。

修改 FindStudentByPageServlet

  • 增加获取班号的条件查询参数用于查询。
  • 增加获取是否来自班级管理页面的标记,并存入到 request 域中。

修改 UpdateStudentServlet

增加获取班号的参数,并设置其为学生类对象的班号。

新增 CheckClassBeanIdServlet

检查班号是否重复,并响应相关的结果。

新增 FindClassBeanServlet

根据请求参数获取班级列表数据。

新增 AddClassBeanServlet

增加班级信息,然后跳转到班级管理页面。

新增 RemoveClassBeanServlet

移动班级信息,并跳转到管理班级页面。

新增 UpdateClassBeanServlet

更新班级信息,并跳转到班级管理页面。

前端页面代码

修改 custom.css

  • 增加 #studentCidExistsMark 和 #classIdExistsMark 的样式。

修改 custom.js

  • 新增 “增加元素之前检查 cid 是否存在” 的方法,要求用户输入的班号 cid 必须存在于班级表中,否则提示错误并阻止表单提交。
  • 修改 ID 为 addRow 的按钮绑定的事件:添加对班号的获取和进行相应的合理性检查,并且发送给后台的数据也带上班号。
  • 修改 ID 为 editRows 的按钮绑定的事件:当完成按钮被点击后,新增班号的获取,并且在发送给后台的数据也带上班号。

修改 student.jsp

  • 移除退出按钮,增加返回按钮。
  • 表格的表头增加“所属班号”,表体的每行遍历输出中增加班号的显示。
  • 定义的分页查询的常量 defaultParams 的值中增加班号的查询条件。
  • 查询表单框增加 name 为 cid 的班号。
  • 表格模态框的框内信息增加 name 为 studentCid 的所属班号。
  • 返回按钮增加一个是否来自班级管理页面的判定,根据判定结果来决定返回的页面;如果判断为真,则返回班级管理页面,否则返回主页。

新增 main.jsp

  • 增加跳转到学生管理页面的按钮;
  • 增加跳转到班级管理页面的按钮;
  • 增加退出按钮。

新增 class.jsp

  • 增加返回按钮。
  • 增加显示全部按钮。
  • 增加新增按钮,以及对应的新增表格模态框。
  • 增加班级信息查询表单框。
  • 增加班级信息显示表格。
  • 表格每一行的“删除”按钮调用删除本行对应班级的方法。
  • 表格每一行的“编辑”按钮,对应编辑表格模态框,以及调用回显班级信息到模态框的方法。
  • 表格每一行的“学生信息”按钮链接到 FindStudentByPageServlet 时,附带来自班级管理页面的标记参数。

新增 class.js

  • 新增增加元素之前检查 id 是否重复的方法。
  • 为新增按钮对应的模态框的确定按钮绑定事件。
  • 新增删除本行对应班级的方法。
  • 新增回显班级信息到模态框的方法。
  • 为编辑按钮对应的模态框的确定按钮绑定事件。


视频讲解

文章来源:智云一二三科技

文章标题:视频讲解学员信息管理系统升级版

文章地址:https://www.zhihuclub.com/190732.shtml

关于作者: 智云科技

热门文章

网站地图