简介
![](https://i-blog.csdnimg.cn/blog_migrate/1f6ae5bf9bb58c889fa71abd73ec455d.png)
![](https://i-blog.csdnimg.cn/blog_migrate/9ac1c2ee033f223df99bb3b4455bd629.png#pic_center)
![](https://i-blog.csdnimg.cn/blog_migrate/81136cd7a476c4f189274d7f54d45fb7.png#pic_center)
![](https://i-blog.csdnimg.cn/blog_migrate/552eab7f3d3e7cc6e4e0b3e22bf29fff.png#pic_center)
本文基于SpringBoot2+Redis+Consul(+MyBatisPlus+Thymeleaf+Echarts) 实现一个分布式的学生成绩管理系统。它在上一SpringBoot+MyBatisPlus+Redis+Thymeleaf+Echarts版本基础上吸收分布式架构思想,将项目拆分为多个模块,使整个项目易于扩展和维护。
完整代码见github
任务
![](https://i-blog.csdnimg.cn/blog_migrate/06f812f186809771c14cab75c00c59c8.png#pic_center)
相关工作
- MySQL+java: 实现学生成绩管理系统(1.0版本)
- 整合Spring+Mybatis 学生成绩管理系统(完整代码)
- JavaWeb+MySQL实现学生成绩管理系统(1.0版本完整代码)
- SSM 实现学生成绩管理系统(完整代码)
- SpringBoot+MyBatisPlus+Redis+Thymeleaf+Echarts: 实现学生成绩管理系统
本项目基于以上项目进行改进。主要内容有:
- 应用SpringCloud H+SpringBoot2 目前主流的开发框架
- 项目原有部分拆分为公共模块、用户模块和学生模块三个模块部署
- 使用自带图形界面的Consul作为服务注册中心
- 使用Redis实现不同端口的Session共享
- 增加邮箱模块,实现向指定邮箱发送学生成绩统计信息
- 增加未登录或登录过期页面
更新日志(已经在github上更新)
- 暂无
项目结构-子模块介绍
这是一个maven工程,具有4个子模块,都是maven项目。
- 公共模块:实体类、配置类、前端页面
- 用户模块:登录、注册(验证码)、注销
- 学生模块:增加、删除、修改、查找、统计
- 邮箱模块:发送邮件
![](https://i-blog.csdnimg.cn/blog_migrate/e53557c3c83b151b161585abe0ae7f7a.png#pic_center)
注册中心
使用Consul作为注册中心管理不同服务的状态
<!--Consul注册中心-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-consul-discovery</artifactId>
<version>3.0.3</version>
</dependency>
![](https://i-blog.csdnimg.cn/blog_migrate/68c2e5ad96e76819b34f0cea9bb9fa2b.png)
数据库
使用MySQL实现,和上一版本一致。
USE student_score_ssm;
CREATE TABLE student_score(
id INT PRIMARY KEY AUTO_INCREMENT,
NO VARCHAR(10) UNIQUE NOT NULL,
NAME VARCHAR(20) NOT NULL,
score FLOAT(20),
class_name INT
);
CREATE TABLE USER(
id INT PRIMARY KEY AUTO_INCREMENT,
username VARCHAR(20) UNIQUE,
PASSWORD VARCHAR(20) NOT NULL,
email VARCHAR(20)
);
邮箱功能
使用javax.mail实现发送信息给指定邮箱功能
<!--邮箱-->
<dependency>
<groupId>javax.mail</groupId>
<artifactId>mail</artifactId>
<version>1.5.0-b01</version>
</dependency>
邮箱模块自测:
![](https://i-blog.csdnimg.cn/blog_migrate/d2a03772eedc69a41a1a2b0a71c6ad51.png)
Session共享
<!--redis-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.session</groupId>
<artifactId>spring-session-data-redis</artifactId>
</dependency>
Redis实现Session共享:实现用户模块的Session共享到其它模块,避免公共模块的拦截器拦截不同模块之间的正常调用.
自测:两个模块分别为8080和8081端口,使用8081可以访问8080端口的session.
![](https://i-blog.csdnimg.cn/blog_migrate/14e53bb00b03c0de6c1e1fe790b0662a.png#pic_center)
参考:https://codeload.github.com/2010yhh/springBoot-demos/zip/refs/heads/master
增加未登录界面
![](https://i-blog.csdnimg.cn/blog_migrate/551bc168df7f3e2a886306f4afd22753.png#pic_center)
其他页面见SpringBoot+MyBatisPlus+Redis+Thymeleaf+Echarts版本