百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

视频讲解学员信息管理系统升级版(学员管理系统 培训机构)

wxin55 2024-10-29 17:27 83 浏览 0 评论


升级前的项目介绍:视频讲解学员信息管理系统小项目:数据库,JavaWeb,前端

项目需求

  • 使用 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 是否重复的方法。
  • 为新增按钮对应的模态框的确定按钮绑定事件。
  • 新增删除本行对应班级的方法。
  • 新增回显班级信息到模态框的方法。
  • 为编辑按钮对应的模态框的确定按钮绑定事件。



视频讲解

视频讲解合集

相关推荐

Shiro学习系列教程三:集成web(web集成环境)

相关推荐:《Shiro学习系列教程一:Shiro之helloworld》《Shiro学习系列教程三:集成web》《Shiro学习系列教程四:集成web(二)》《Shiro学习系列教程五:自定义Real...

写了这么多年代码,这样的登录方式还是头一回见

SpringSecurity系列还没搞完,最近还在研究。有的时候我不禁想,如果从SpringSecurity诞生的第一天开始,我们就一直在追踪它,那么今天再去看它的源码一定很简单,因为我们了...

Shiro框架:认证和授权原理(shiro框架授权的四种方式)

优质文章,及时送达前言Shiro作为解决权限问题的常用框架,常用于解决认证、授权、加密、会话管理等场景。本文将对Shiro的认证和授权原理进行介绍:Shiro可以做什么?、Shiro是由什么组成的?举...

Spring Boot 整合 Shiro-登录认证和权限管理

这篇文章我们来学习如何使用SpringBoot集成ApacheShiro。安全应该是互联网公司的一道生命线,几乎任何的公司都会涉及到这方面的需求。在Java领域一般有SpringS...

Apache Shiro权限管理解析二Apache Shiro核心组件

ApacheShiro核心组件Subject(用户主体)Subject是Shiro中的核心概念之一,表示当前用户(可以是登录的用户或匿名用户)。它是与用户交互的主要接口,提供了对用户身份验证...

详细介绍一下Apache Shiro的实现原理?

ApacheShiro是一个强大、灵活的Java安全框架,设计目标是简化复杂的安全需求,提供灵活的API,使开发者能方便地将安全功能集成到任何应用中。主要作用是用于管理身份验证、授权、会话管理和加...

什么是Apache Shiro?SpringBoot中如何整合Apache Shiro?

ApacheShiro是一个功能强大且易于使用的Java安全框架,主要用于构建安全的企业应用程序,例如在应用中处理身份验证(Authentication)、授权(Authorization)、加密(...

Apache Shiro权限管理解析三Apache Shiro应用

Shiro的优势与适用场景优势简单易用:API设计直观,适合中小型项目快速实现权限管理。灵活性高:支持多种数据源(数据库、LDAP等),并允许开发者自定义Realm。跨平台支持:不仅限于We...

那些通用清除软件不曾注意的秘密(清理不需要的应用)

系统清理就像卫生检查前的大扫除,即使你使出吃奶的劲儿把一切可能的地方都打扫过,还会留下边边角角的遗漏。随着大家电脑安全意识的提高,越来越多的朋友开始关注自己的电脑安全,也知道安装360系列软件来"武装...

JWT在跨域认证中的奇妙应用(jq解决跨域)

JWT在跨域认证中的奇妙应用什么是JWT?让我们先来聊聊JWT(JSONWebToken)。它是一种轻量级的认证机制,就像一张电子车票,能让用户在不同的站点间通行无阻。JWT由三部分组成:头部(H...

开启无痕浏览模式真能保护个人隐私吗?

在访问网站页面时,你是否有过这样的疑虑,自己访问的会不会是山寨网站?用公用电脑上网,个人信息会被别人看到吗?这时,有人会说,使用浏览器的“无痕浏览”模式不就行了,可以在操作中不留下“蛛丝马迹”,但,真...

辅助上网为啥会被抛弃 曲奇(Cookie)虽甜但有毒

近期有个小新闻,大概很多小伙伴都没有注意到,那就是谷歌Chrome浏览器要弃用Cookie了!说到Cookie功能,很多小伙伴大概觉得不怎么熟悉,有可能还不如前一段时间被弃用的Flash“出名”,但它...

cookie、session和token(cookie,session和token的区别)

Cookie的概念最早是在1994年由NetscapeCommunications的程序员LouMontulli发明的,目的是为了解决当时早期互联网的一个关键问题:HTTP无状态协...

小白都能看懂的session与cookie的区别理解

cookie/session都是跟踪识别浏览器用户身份的一个东西。cookie的理解:我们要知道,服务器和客户端之间进行数据传输,需要使用到一个超文本传输协议(http协议),而http协议本身是个...

面试:网易一面:支撑10万QPS的电商购物车系统如何架构设计呢?

1.需求分析:10万QPS的购物车系统需要满足哪些需求?回答:10万QPS的购物车系统需要满足以下核心需求和挑战:核心功能:添加、删除、修改购物车商品实时查看购物车列表支持高并发读写(10万QPS)...

取消回复欢迎 发表评论: