基于javaweb的课程在线学习与测试系统(java+ssm+redis+bootstrap+tomcat+mysql)

基于javaweb的课程在线学习与测试系统(java+ssm+redis+bootstrap+tomcat+mysql)

运行环境

Java≥8、MySQL≥5.7、Tomcat≥8

开发工具

eclipse/idea/myeclipse/sts等均可配置运行

适用

课程设计,大作业,毕业设计,项目练习,学习演示等

功能说明

20220519000951

20220519000952

20220519000954

20220519000955

20220519000956

20220519000957

20220519000958

基于javaweb+SpringBoot的课程在线学习与测试系统(java+SSM+redis+Bootstrap+Tomcat+mysql)

基于B/S架构的课程在线学习与测试系统

启动说明

项目为maven管理,最近集成了redis,所以在运行项目是先要下载redis并启动客户端,方可正常运行项目,由于只需要下载redis,无需其他配置,这里就不做过多说明。

最近更新

集成redis来保存用户登录信息,添加过滤器重置用户登录有效期。拦截器实现统一登录和权限校验(相关重构还未完成)。

修改配置文件:com.bs.commonn.RedisPool 地址、端口号

pool = new JedisPool(config,“127.0.0.1”,6379,1000*2);

修改数据库配置文件,导入项目bs.sql文件

学生账号测试:lwj 123456

教师测试账号:lwj 123456

管理员测试账号:admin admin

项目采用前后端分离技术实现


  • 框架:SSM(Spring,SpringMVC,Mybatis)

  • 缓存:redis

  • 数据库:MySQL

  • IDE:Intellij IDEA/Eclipse

  • 其他:Maven,Git

项目亮点


  1. 前后端分离。

  2. 用户登录权限区分和控制。

  3. 防止横向越权和纵向越权。

  4. 密码MD5明文加密。

  5. 设计高复用的服务器响应对象。

  6. guava缓存。

  7. pojo,vo抽象模型。

  8. 数据绑定对象。

  9. Mybatis分页

  10. Bootstrap。

  11. artTemplate,artDialog,iframe前端模板使用。

  12. select2、toastr、sweetalert等等前端插件的使用。

  13. redis缓存。

  14. 全局异常处理,拦截器权限统一检验。

班级管理控制层:

@Controller

@SuppressWarnings(“all”)

public class ClassInfoHandler {

@Autowired

private ClassInfoService classInfoService;

@Autowired

private GradeInfoService gradeInfoService;

@Autowired

private TeacherInfoService teacherInfoService;

@Autowired

private TeacherInfo teacher;

@Autowired

private ClassInfo classInfo;

@Autowired

private Gson gson;

private Logger logger = Logger.getLogger(ClassInfoHandler.class);

/**

  • 获取所有班级

  • @param gradeId

  •        系部编号
    
  • @param className

  •        班级名称 可用于模糊查询
    
  • @param classId

  •        班级编号
    
  • @return

*/

@RequestMapping(value = “/classes”, method = RequestMethod.GET)

public ModelAndView getClasses(@RequestParam(value = “gradeId”, required = false) Integer gradeId,

@RequestParam(value = “className”, required = false) String className,

@RequestParam(value = “classId”, required = false) Integer classId) {

ModelAndView model = new ModelAndView();

ClassInfo classInfo = new ClassInfo();

/* 处理查询条件 */

if (gradeId != null) {

GradeInfo gradeInfo = new GradeInfo();

gradeInfo.setGradeId(gradeId);

classInfo.setGrade(gradeInfo);

if (classId != null)

classInfo.setClassId(classId);

if (className != null) {

if (className.trim() != “”)

classInfo.setClassName(className);

List classes = classInfoService.getClasses(classInfo);

model.setViewName(“admin/clazz/classes”);

model.addObject(“classes”, classes);

return model;

/**

  • 预添加班级处理

  • @return

*/

@RequestMapping(“/preAddClass”)

public ModelAndView preAddClass(@RequestParam(name = “gid”,required = false,defaultValue = “”)Integer gid) {

ModelAndView model = new ModelAndView();

// 获取系部信息

List grades = gradeInfoService.getGrades();

model.setViewName(“admin/clazz/classedit”);

model.addObject(“grades”, grades);

// 获取不是班主任的教师

teacher.setIsWork(0);

Map<String, Object> map = new HashMap<String, Object>();

map.put(“startIndex”, null);

map.put(“pageShow”, null);

map.put(“teacher”, teacher);

List teachers = teacherInfoService.getTeachers(map);

model.addObject(“teachers”, teachers);

model.addObject(“editClass”, new ClassInfo());

model.addObject(“gid”,gid);

return model;

/**

  • 添加班级

  • @param classInfo

  •        班级信息
    
  • @param request

  • @return

*/

@RequestMapping(value = “/class”, method = RequestMethod.POST)

public String isAddClass(ClassInfo classInfo, HttpServletRequest request) {

//判断班级名是否存在

ClassInfo byClassName = classInfoService.findByClassName(classInfo.getClassName());

if(byClassName!=null){

request.setAttribute(“error”, “该班级名称已存在!”);

return “error”;

// 修改教师班主任状态

String returnMsg = isChangeTeacherWork(1, classInfo.getTeacher().getTeacherId());

if (returnMsg != null) {

request.setAttribute(“error”, “修改教师班主任状态 对应教师编号有误”);

return “error”;

// 添加

int row = classInfoService.isAddClass(classInfo);

if (row < 1) {

request.setAttribute(“error”, “班级 " + classInfo.getClassName() + " 添加失败,请稍后再试!”);

return “error”;

return “redirect:/classes”;

/**

  • 删除班级

  • @param classId

  •        班级编号
    
  • @param request

  • @return

*/

@RequestMapping(value = “/del/class/{classId}”, method = RequestMethod.DELETE)

public String isDelClass(@PathVariable(“classId”) Integer classId, HttpServletRequest request) {

logger.info("删除班级 " + classId);

// 将删除班级对于之前班主任改为 非班主任状态

// 需要在删除班级之前修改,如果先删除了班级,再根据班级获取教师编号,就不能获取

ClassInfo delClass = classInfoService.getClassById(classId);

String returnMsg = isChangeTeacherWork(0, delClass.getTeacher().getTeacherId());

if (returnMsg != null) {

request.setAttribute(“error”, “修改教师班主任状态 对应教师编号有误”);

return “error”;

// 删除

int row = classInfoService.isDelClass(classId);

if (row < 1) {

logger.error(“班级 " + classId + " 删除失败”);

request.setAttribute(“error”, “班级删除失败,请稍后再试!”);

return “…/error”;

return “redirect:/classes”;

/**

  • 预修改班级处理

  • @param classId

  •        班级编号
    
  • @return

*/

@RequestMapping(value = “edit/class/{classId}”, method = RequestMethod.GET)

public ModelAndView preUpdateClass(@PathVariable(“classId”) Integer classId) {

logger.info(“预修改班级处理”);

ModelAndView model = new ModelAndView();

// 获取要修改班级

ClassInfo classInfo = classInfoService.getClassById(classId);

model.setViewName(“/admin/clazz/classe

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
一、项目简介本课程演示的是一套基于SSM实现的在线考试系统,主要针对计算机相关专业的正在做毕设的学生与需要项目实战练习的Java学习者。课程包含:1. 项目源码、项目文档、数据库脚本、软件工具等所有资料2. 带你从零开始部署运行本套系统3. 该项目附带的源码资料可作为毕设使用4. 提供技术答疑二、技术实现后台框架:Spring、SpringMVC、MyBatisUI界面:JSP、jQuery 、BootStrap数据库:MySQL 三、系统功能该在线考试系统基于B/S架构,采用SSM框架,运用JSP网页开发技术,并结合MySQL数据库,搭建一个高效、便捷的网络考试平台。 ​本系统分为前台考试模块和后台管理模块,包含学生、教师和管理员共三个角色,功能如下: 1.前台考试模块 学生注册、学生登陆、考试中心、参加考试、查看考试成绩、查看历史考卷、查看个人信息等功能。 2.后台管理模块 系统后台登陆、学生管理、教师管理、班级管理、年级管理、科目管理、试题管理、添加试题、导入试题、试卷管理、生成试卷、考试安排管理、添加考试计划、查看以往考试信息、考试成绩统计等功能。 教师主要完成试卷管理、试题管理、考试计划管理等一些与考试相关的操作;管理员具有最高权限,可以管理学生、老师、试题、题库、考试等信息,同时也可以与老师一样进行考试相关的操作。 该系统功能完善、界面美观、操作简单、功能齐全、管理便捷,具有很高的实际应用价值。 四、项目截图1)前台首面 2)历史试卷回顾 3)系统后台管理 4)试卷管理 5)试题管理  更多Java毕设项目请关注【毕设系列课程】https://edu.csdn.net/lecturer/2104   

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值