基于Spring Boot和JSP的作业管理系统

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: 基于Spring Boot和JSP的作业管理系统

一、简介


项目地址:https://github.com/CcQun/HomeworkSystem


本文主要介绍基于Spring Boot和JSP的作业管理系统的架构和功能介绍,在该系统中前端使用JSP,后端使用Spring Boot,数据库操作使用JPA并且数据库使用MySQL。该系统分为老师端和学生端,同时支持最基本的老师布置作业与学生提交作业等基本功能以及一些拓展功能。主要包括的功能如下:


老师端:


  1. 注册账号
  2. 作为老师登录
  3. 添加作业
  4. 查看自己布置的作业
  5. 查看某一作业的提交情况
  6. 对某一同学的作业进行打分评价
  7. 查看作业统计信息(包括该作业的平均分最高分提交人数等)
  8. 注销登录


学生端:


  1. 注册账号
  2. 作为学生登录
  3. 查看作业(包括进行中未开始已截止的作业都可查看)
  4. 提交作业
  5. 编辑已提交的作业
  6. 查看作业情况(包括自己的得分以及老师的评价)
  7. 注销登录


二、数据库设计


本系统的数据模型主要包括四张表即Student、Teacher、Homework和Submit表。其中Submit表表示学生和作业之间的多对多关系,即学生提交的作业。具体的数据模型的ER图如下所示:


QQ图片20220531180803.png


为了方便调试,我为数据库添加了若干条初始化的数据,可以直接使用项目中的homework.sql脚本初始化一个带有数据的数据库。


三、后端架构


1. 配置文件


后端服务器使用Spring Boot,其配置如下:

# 在执行sql语句是将其打印出来
spring.jpa.show-sql=true 
# 以下部分为数据库设置
spring.jpa.database=mysql
spring.datasource.url=jdbc:mysql://localhost:3306/homework?useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=GMT
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.username=root
spring.datasource.password=Cui5039795891
spring.mvc.view.prefix=/WEB-INF/jsp/
spring.mvc.view.suffix=.jsp


2. 添加webapp文件夹


如果没有webapp文件夹的话就要先新建一个webapp文件夹,然后在webapp文件夹下新建WEB-INF文件夹,然后在WEB-INF文件夹下新建web.xml文件,最后按下图操作即可标定好项目的View层源文件夹了:


QQ图片20220531180841.png


3. 项目文件结构


在下图中可以看到项目的一些文件夹结构,controller文件夹放置各个子模块的controller代码文件,core文件夹放置一些工具类,db文件夹放置数据库相关的mapper、model和service等文件夹。项目的文件结构图如下:


QQ图片20220531180915.png


四、功能介绍


1. 登录(老师、学生)


QQ图片20220531181227.png


进入登录界面后可以选择作为老师或学生进行登录,如果没有账号可以去注册一个。学生登录后的主页如下:


QQ图片20220531181224.png



2. 注册(老师、学生)

QQ图片20220531181222.png


进入注册界面后可以选择注册学生账号或老师账号。注册学生账号成功的界面如下:



QQ图片20220531181220.png


3. 添加作业(老师)



QQ图片20220531181217.png


老师填写作业标题和内容并选择作业起止时间后可以提交保存作业。添加作业成功的界面如下:


QQ图片20220531182103.png


4. 查看自己发布的作业(老师)

QQ图片20220531182155.png


5. 查看作业提交情况(老师)

QQ图片20220531182245.png



6. 为学生作业打分和评价(老师)

QQ图片20220531182247.png


7. 查看某一作业的统计信息(老师)

QQ图片20220531182427.png


8. 查看作业(学生)


QQ图片20220531182352.png

在查看作业时可以看到作业的当前状态(未开始、进行中、已结束)也可以看到自己是否已经提交作业,在提交了作业以后如果作业仍处于进行中的状态则可以编辑修改作业,同时也可以查看自己提交的作业。

9. 提交作业(学生)


QQ图片20220531182506.png


可以填写作业的标题和内容来提交作业,提交成功会收到以下提示:



QQ图片20220531182542.png


10. 编辑作业(学生)


QQ图片20220531182619.png


在该页面上可以看到以往提交的作业的内容,修改以后可以点击提交来保存修改的作业,然后会收到以下提示:



QQ图片20220531182707.png


11. 查看我的提交(学生)


QQ图片20220531182753.png


12. 注销登录(老师、学生)


QQ图片20220531182825.png


QQ图片20220531182825.pngQQ图片20220531182825.png

在老师和学生的主页均有注销登录按钮,点击后会返回登录界面:



QQ图片20220531182907.png


五、部署Docker镜像


  1. 首先在Maven工具栏中选择执行clean:


QQ图片20220531182942.png


clean执行完以后target目录会被删除。


  1. 然后在Maven工具栏中选择执行package:


QQ图片20220531183023.png


执行完package以后会生成target目录:


QQ图片20220531183116.png


  1. 将target目录下的homework-0.0.1-SNAPSHOT.jar以及编写的Dockerfile文件夹上传Linux云服务器:


QQ图片20220531183145.png


Dockerfile文件内容如下:

FROM java:8
ADD homework-0.0.1-SNAPSHOT.jar test.jar
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/test.jar"]


QQ图片20220531183227.pngQQ图片20220531183227.png

QQ图片20220531183227.png


开始push以后会看到以下过程,之后需要等待一段时间即可成功提交:


QQ图片20220531183503.png


相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
打赏
0
0
0
0
4
分享
相关文章
对话即服务:Spring Boot整合MCP让你的CRUD系统秒变AI助手
本文介绍了如何通过Model Context Protocol (MCP) 协议将传统Spring Boot服务改造为支持AI交互的智能系统。MCP作为“万能适配器”,让AI以统一方式与多种服务和数据源交互,降低开发复杂度。文章以图书管理服务为例,详细说明了引入依赖、配置MCP服务器、改造服务方法(注解方式或函数Bean方式)及接口测试的全流程。最终实现用户通过自然语言查询数据库的功能,展示了MCP在简化AI集成、提升系统易用性方面的价值。未来,“对话即服务”有望成为主流开发范式。
383 1
微服务——SpringBoot使用归纳——Spring Boot中的全局异常处理——处理系统异常
本文介绍了在Spring Boot项目中如何通过创建`GlobalExceptionHandler`类来全局处理系统异常。通过使用`@ControllerAdvice`注解,可以拦截项目中的各种异常,并结合`@ExceptionHandler`注解针对特定异常(如参数缺失、空指针等)进行定制化处理。文中详细展示了处理参数缺失异常和空指针异常的示例代码,并说明了通过拦截`Exception`父类实现统一异常处理的方法。虽然拦截`Exception`可一劳永逸,但为便于问题排查,建议优先处理常见异常,最后再兜底处理未知异常,确保返回给调用方的信息友好且明确。
35 0
微服务——SpringBoot使用归纳——Spring Boot中的全局异常处理——处理系统异常
基于SpringBoot+Vue实现的大学生就业服务平台设计与实现(系统源码+文档+数据库+部署等)
面向大学生毕业选题、开题、任务书、程序设计开发、论文辅导提供一站式服务。主要服务:程序设计开发、代码修改、成品部署、支持定制、论文辅导,助力毕设!
基于Java+SpringBoot+Vue实现的车辆充电桩系统设计与实现(系统源码+文档+部署讲解等)
面向大学生毕业选题、开题、任务书、程序设计开发、论文辅导提供一站式服务。主要服务:程序设计开发、代码修改、成品部署、支持定制、论文辅导,助力毕设!
基于SpringBoot+Vue的班级综合测评管理系统设计与实现(系统源码+文档+数据库+部署等)
✌免费选题、功能需求设计、任务书、开题报告、中期检查、程序功能实现、论文辅导、论文降重、答辩PPT辅导、会议视频一对一讲解代码等✌
基于SpringBoot+Vue实现的大学生体质测试管理系统设计与实现(系统源码+文档+数据库+部署)
面向大学生毕业选题、开题、任务书、程序设计开发、论文辅导提供一站式服务。主要服务:程序设计开发、代码修改、成品部署、支持定制、论文辅导,助力毕设!
基于SpringBoot+Vue实现的冬奥会科普平台设计与实现(系统源码+文档+数据库+部署)
面向大学生毕业选题、开题、任务书、程序设计开发、论文辅导提供一站式服务。主要服务:程序设计开发、代码修改、成品部署、支持定制、论文辅导,助力毕设!
深入实践springboot实战 蓄势待发 我不是雷锋 我是知识搬运工
springboot,说白了就是一个集合了功能的大类库,包括springMVC,spring,spring data,spring security等等,并且提供了很多和可以和其他常用框架,插件完美整合的接口(只能说是一些常用框架,基本在github上能排上名次的都有完美整合,但如果是自己写的一个框架就无法实现快速整合)。
Java本地高性能缓存实践问题之SpringBoot中引入Caffeine作为缓存库的问题如何解决
Java本地高性能缓存实践问题之SpringBoot中引入Caffeine作为缓存库的问题如何解决
193 1
Neo4j【付诸实践 01】SpringBoot集成报错org.neo4j.driver.exceptions.ClientException:服务器不支持此驱动程序支持的任何协议版本(解决+源代码)
Neo4j【付诸实践 01】SpringBoot集成报错org.neo4j.driver.exceptions.ClientException:服务器不支持此驱动程序支持的任何协议版本(解决+源代码)
476 1