• Java项目:ssm在线考试系统


    作者主页:夜未央5788

     简介:Java领域优质创作者、Java项目、学习资料、技术互助

    文末获取源码

    项目介绍

    在线考试系统分为前后台,分为学生、老师、管理员三种角色;前台学生登录,后台老师、管理员登录;
    前台学生登录主要功能包括:
    登录、注册、考试中心参加教师分配的考试内容、查看考试历史,回顾考试试卷;

    管理员主要功能包括:
    首页试卷统计;
    基本信息:年级管理、科目管理;
    班级管理:班级管理、各班人数折线图统计;
    教师管理:教师信息增删改查;
    学生管理:学生信息增删改查、学生考试平均成绩柱状图统计;
    试卷管理:包括查看试题、添加试题、生成试题;
    试题管理:试题列表,导入试题;
    考试安排管理:待考信息;
    以往考试信息:考试记录;

    教师登录后功能菜单与管理员相同,但会限制当前教师的权限;
     

    环境需要

    1.运行环境:最好是java jdk 1.8,我们在这个平台上运行的。其他版本理论上也可以。
    2.IDE环境:IDEA,Eclipse,Myeclipse都可以。推荐IDEA;
    3.tomcat环境:Tomcat 7.x,8.x,9.x版本均可
    4.硬件环境:windows 7/8/10 1G内存以上;或者 Mac OS;
    5.是否Maven项目: 否;查看源码目录中是否包含pom.xml;若包含,则为maven项目,否则为非maven项目 

    6.数据库:MySql 5.7版本;

    技术栈

    1. 后端:Spring SpringMVC MyBatis

    2. 前端:JSP+bootstrap+jQuery+Echarts

    使用说明

    1. 使用Navicat或者其它工具,在mysql中创建对应名称的数据库,并导入项目的sql文件;
    2. 使用IDEA/Eclipse/MyEclipse导入项目,Eclipse/MyEclipse导入时,若为maven项目请选择maven;若为maven项目,导入成功后请执行maven clean;maven install命令,配置tomcat,然后运行;
    3. 将项目中db.properties配置文件中的数据库配置改为自己的配置;
    4. 运行项目,输入localhost:8080/ 登录
    学生用户名:xiepengfei 密码:123
    管理员用户名:ylrc 密码:123456

    教师用户名:liyinping 密码:123456

    运行截图

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

    相关代码 

    管理员首页

    1. package com.taohan.online.exam.handler;
    2. import java.io.IOException;
    3. import javax.servlet.http.HttpServletResponse;
    4. import org.apache.log4j.Logger;
    5. import org.springframework.beans.factory.annotation.Autowired;
    6. import org.springframework.stereotype.Controller;
    7. import org.springframework.web.bind.annotation.RequestMapping;
    8. import com.google.gson.Gson;
    9. import com.taohan.online.exam.service.ExamPaperInfoService;
    10. import com.taohan.online.exam.service.StudentInfoService;
    11. import com.taohan.online.exam.service.SubjectInfoService;
    12. import com.taohan.online.exam.service.TeacherInfoService;
    13. /**
    14. *
    15. *

      Title: AdminHomeHandler

    16. *

      Description: 后台首页相关

    17. * @author: taohan
    18. * @date: 2018-9-18
    19. * @time: 下午1:59:22
    20. * @version: 1.0
    21. */
    22. @Controller
    23. public class AdminHomeHandler {
    24. @Autowired
    25. ExamPaperInfoService examPaperInfoService;
    26. @Autowired
    27. SubjectInfoService subjectInfoService;
    28. @Autowired
    29. TeacherInfoService teacherInfoService;
    30. @Autowired
    31. StudentInfoService studentInfoService;
    32. @Autowired
    33. Gson gson;
    34. private Logger logger = Logger.getLogger(AdminHomeHandler.class);
    35. @RequestMapping("/homeInfo")
    36. public void homeInfo(HttpServletResponse response) throws IOException {
    37. logger.info("加载后台首页相关数据");
    38. int examPaperTotal = examPaperInfoService.getExamPpaerTotal();
    39. int subjectTotal = subjectInfoService.getSubjectTotal();
    40. int teacherTotal = teacherInfoService.getTeacherTotal();
    41. int studentTotal = studentInfoService.getStudentTotal();
    42. String json = "{\"examPaperTotal\":"+examPaperTotal+", " +
    43. "\"subjectTotal\":"+subjectTotal+", " +
    44. "\"teacherTotal\":"+teacherTotal+", " +
    45. "\"studentTotal\":"+studentTotal+"}";
    46. response.getWriter().print(json);
    47. }
    48. }

    科目信息

    1. package com.taohan.online.exam.handler;
    2. import java.util.List;
    3. import org.apache.log4j.Logger;
    4. import org.springframework.beans.factory.annotation.Autowired;
    5. import org.springframework.stereotype.Controller;
    6. import org.springframework.web.bind.annotation.*;
    7. import org.springframework.web.servlet.ModelAndView;
    8. import com.taohan.online.exam.po.CourseInfo;
    9. import com.taohan.online.exam.po.GradeInfo;
    10. import com.taohan.online.exam.service.CourseInfoService;
    11. import com.taohan.online.exam.service.GradeInfoService;
    12. /**
    13. *
    14. *

      Title: CourseInfoHandler

    15. *

      Description: 科目

    16. * @author: taohan
    17. * @date: 2018-8-15
    18. * @time: 下午5:32:03
    19. * @version: 1.0
    20. */
    21. @Controller
    22. @SuppressWarnings("all")
    23. public class CourseInfoHandler {
    24. @Autowired
    25. private CourseInfoService courseInfoService;
    26. @Autowired
    27. private GradeInfoService gradeInfoService;
    28. private Logger logger = Logger.getLogger(CourseInfoHandler.class);
    29. /**
    30. * 获取科目信息
    31. * @param gradeId 年级编号
    32. * @param division 分科情况
    33. * @return
    34. */
    35. @RequestMapping("/courses")
    36. public ModelAndView getCourses(@RequestParam(value="gradeId", required=false) Integer gradeId,
    37. @RequestParam(value="division", required=false) Integer division) {
    38. logger.info("获取科目集合 年级条件 "+gradeId+" 分科条件 "+division);
    39. ModelAndView model = new ModelAndView();
    40. model.setViewName("/admin/courses");
    41. CourseInfo course = new CourseInfo();
    42. if (gradeId != null)
    43. course.getGrade().setGradeId(gradeId);
    44. if (division != null)
    45. course.setDivision(division);
    46. List courses = courseInfoService.getCourses(course);
    47. model.addObject("courses", courses);
    48. return model;
    49. }
    50. /**
    51. * 根据科目编号获取学科信息
    52. * @param courseId 科目编号
    53. * @return
    54. */
    55. @RequestMapping("/course/{courseId}")
    56. public ModelAndView getCourseById(@PathVariable("courseId") Integer courseId) {
    57. logger.info("获取科目信息 科目编号 "+courseId);
    58. ModelAndView model = new ModelAndView();
    59. model.setViewName("/admin/courseedit");
    60. CourseInfo course = courseInfoService.getCourseById(courseId);
    61. model.addObject("course", course);
    62. /** 获取所有年级列表 */
    63. List grades = gradeInfoService.getGrades();
    64. model.addObject("grades", grades);
    65. return model;
    66. }
    67. /**
    68. * 添加/修改科目信息
    69. * @param courseId 科目编号
    70. * @param isUpdate 标识是否为修改操作
    71. * @param courseName 科目名称
    72. * @param division 分科情况
    73. * @param gradeId 年级编号
    74. * @return
    75. */
    76. @RequestMapping(value="/course/course", method=RequestMethod.POST)
    77. public String isUpdateOrAddCourse(@RequestParam(value="courseId", required=false) Integer courseId,
    78. @RequestParam(value="isupdate", required=false) Integer isUpdate,
    79. @RequestParam("courseName") String courseName,
    80. @RequestParam("division") Integer division,
    81. @RequestParam("gradeId") Integer gradeId) {
    82. CourseInfo course = new CourseInfo();
    83. course.setCourseId(courseId);
    84. course.setCourseName(courseName);
    85. course.setDivision(division);
    86. GradeInfo grade = new GradeInfo();
    87. grade.setGradeId(gradeId);
    88. course.setGrade(grade);
    89. //修改
    90. if (isUpdate != null) {
    91. logger.info("修改科目 "+course+" 的信息");
    92. int row = courseInfoService.isUpdateCourse(course);
    93. }
    94. //添加
    95. else {
    96. logger.info("添加科目 "+course+" 的信息");
    97. int row = courseInfoService.isAddCourse(course);
    98. }
    99. return "redirect:/courses";
    100. }
    101. /**
    102. * 删除科目
    103. * @param courseId 待删除科目编号
    104. * @return
    105. */
    106. @RequestMapping(value="/course/{courseId}", method=RequestMethod.DELETE)
    107. public String isDelTeacher(@PathVariable("courseId") Integer courseId) {
    108. logger.info("删除科目 "+courseId);
    109. int row = courseInfoService.isDelCourse(courseId);
    110. return "redirect:/courses";
    111. }
    112. /**
    113. * 预添加科目信息
    114. * @return
    115. */
    116. @RequestMapping("/preAddCourse")
    117. public ModelAndView preAddCourse() {
    118. logger.info("预添加科目信息");
    119. ModelAndView model = new ModelAndView();
    120. model.setViewName("/admin/courseedit");
    121. /** 获取年级集合 */
    122. List grades = gradeInfoService.getGrades();
    123. model.addObject("grades", grades);
    124. return model;
    125. }
    126. }

    班级信息

    1. package com.taohan.online.exam.handler;
    2. import java.io.IOException;
    3. import java.util.HashMap;
    4. import java.util.List;
    5. import java.util.Map;
    6. import javax.servlet.http.HttpServletRequest;
    7. import javax.servlet.http.HttpServletResponse;
    8. import org.apache.log4j.Logger;
    9. import org.springframework.beans.factory.annotation.Autowired;
    10. import org.springframework.stereotype.Controller;
    11. import org.springframework.web.bind.annotation.*;
    12. import org.springframework.web.servlet.ModelAndView;
    13. import com.google.gson.Gson;
    14. import com.taohan.online.exam.charts.StudentCount;
    15. import com.taohan.online.exam.po.ClassInfo;
    16. import com.taohan.online.exam.po.GradeInfo;
    17. import com.taohan.online.exam.po.TeacherInfo;
    18. import com.taohan.online.exam.service.ClassInfoService;
    19. import com.taohan.online.exam.service.GradeInfoService;
    20. import com.taohan.online.exam.service.TeacherInfoService;
    21. /**
    22. *
    23. *

      Title: ClassInfoHandler

    24. *

      Description: 班级

    25. * @author: taohan
    26. * @date: 2018-8-13
    27. * @time: 下午2:18:14
    28. * @version: 1.0
    29. */
    30. @Controller
    31. @SuppressWarnings("all")
    32. public class ClassInfoHandler {
    33. @Autowired
    34. private ClassInfoService classInfoService;
    35. @Autowired
    36. private GradeInfoService gradeInfoService;
    37. @Autowired
    38. private TeacherInfoService teacherInfoService;
    39. @Autowired
    40. private TeacherInfo teacher;
    41. @Autowired
    42. private ClassInfo classInfo;
    43. @Autowired
    44. private Gson gson;
    45. private Logger logger = Logger.getLogger(ClassInfoHandler.class);
    46. /**
    47. * 获取所有班级
    48. * @param gradeId 年级编号
    49. * @param className 班级名称 可用于模糊查询
    50. * @param classId 班级编号
    51. * @return
    52. */
    53. @RequestMapping(value="/classes", method=RequestMethod.GET)
    54. public ModelAndView getClasses(@RequestParam(value="gradeId", required=false) Integer gradeId,
    55. @RequestParam(value="className", required=false) String className,
    56. @RequestParam(value="classId", required=false) Integer classId) {
    57. logger.info("获取班级集合 条件:gradeId: "+gradeId+", 班级编号:"+classId+", 班级:"+className);
    58. ModelAndView model = new ModelAndView();
    59. ClassInfo classInfo = new ClassInfo();
    60. /*处理查询条件*/
    61. if (gradeId != null) {
    62. GradeInfo gradeInfo = new GradeInfo();
    63. gradeInfo.setGradeId(gradeId);
    64. classInfo.setGrade(gradeInfo);
    65. }
    66. if (classId != null)
    67. classInfo.setClassId(classId);
    68. if (className != null) {
    69. if (className.trim() != "")
    70. classInfo.setClassName(className);
    71. }
    72. List classes = classInfoService.getClasses(classInfo);
    73. model.setViewName("admin/classes");
    74. model.addObject("classes", classes);
    75. return model;
    76. }
    77. /**
    78. * 预添加班级处理
    79. * @return
    80. */
    81. @RequestMapping("/preAddClass")
    82. public ModelAndView preAddClass() {
    83. logger.info("预添加班级信息");
    84. ModelAndView model = new ModelAndView();
    85. //获取年级信息
    86. List grades = gradeInfoService.getGrades();
    87. model.setViewName("admin/classedit");
    88. model.addObject("grades", grades);
    89. //获取不是班主任的教师
    90. teacher.setIsWork(0);
    91. Map map = new HashMap();
    92. map.put("startIndex", null);
    93. map.put("pageShow", null);
    94. map.put("teacher", teacher);
    95. List teachers = teacherInfoService.getTeachers(map);
    96. model.addObject("teachers", teachers);
    97. model.addObject("editClass", new ClassInfo());
    98. return model;
    99. }
    100. /**
    101. * 添加班级
    102. * @param classInfo 班级信息
    103. * @param request
    104. * @return
    105. */
    106. @RequestMapping(value="/class", method=RequestMethod.POST)
    107. public String isAddClass(ClassInfo classInfo, HttpServletRequest request) {
    108. logger.info("添加班级信息 "+classInfo);
    109. //修改教师班主任状态
    110. String returnMsg = isChangeTeacherWork(1, classInfo.getTeacher().getTeacherId());
    111. if (returnMsg != null) {
    112. request.setAttribute("error", "修改教师班主任状态 对应教师编号有误");
    113. return "error";
    114. }
    115. //添加
    116. int row = classInfoService.isAddClass(classInfo);
    117. if (row < 1) {
    118. logger.error("班级 "+classInfo+" 删除失败");
    119. request.setAttribute("error", "班级 "+classInfo.getClassName()+" 添加失败,请稍后再试!");
    120. return "../error";
    121. }
    122. return "redirect:/classes";
    123. }
    124. /**
    125. * 删除班级
    126. * @param classId 班级编号
    127. * @param request
    128. * @return
    129. */
    130. @RequestMapping(value="/del/class/{classId}", method=RequestMethod.DELETE)
    131. public String isDelClass(@PathVariable("classId") Integer classId, HttpServletRequest request) {
    132. logger.info("删除班级 "+classId);
    133. //将删除班级对于之前班主任改为 非班主任状态
    134. //需要在删除班级之前修改,如果先删除了班级,再根据班级获取教师编号,就不能获取
    135. ClassInfo delClass = classInfoService.getClassById(classId);
    136. String returnMsg = isChangeTeacherWork(0, delClass.getTeacher().getTeacherId());
    137. if (returnMsg != null) {
    138. request.setAttribute("error", "修改教师班主任状态 对应教师编号有误");
    139. return "error";
    140. }
    141. //删除
    142. int row = classInfoService.isDelClass(classId);
    143. if (row < 1) {
    144. logger.error("班级 "+classId+" 删除失败");
    145. request.setAttribute("error", "班级删除失败,请稍后再试!");
    146. return "../error";
    147. }
    148. return "redirect:/classes";
    149. }
    150. /**
    151. * 预修改班级处理
    152. * @param classId 班级编号
    153. * @return
    154. */
    155. @RequestMapping(value="edit/class/{classId}", method=RequestMethod.GET)
    156. public ModelAndView preUpdateClass(@PathVariable("classId") Integer classId) {
    157. logger.info("预修改班级处理");
    158. ModelAndView model = new ModelAndView();
    159. //获取要修改班级
    160. ClassInfo classInfo = classInfoService.getClassById(classId);
    161. model.setViewName("/admin/classedit");
    162. model.addObject("editClass", classInfo);
    163. List grades = gradeInfoService.getGrades();
    164. //获取不是班主任的教师
    165. teacher.setIsWork(0);
    166. Map map = new HashMap();
    167. map.put("startIndex", null);
    168. map.put("pageShow", null);
    169. map.put("teacher", teacher);
    170. List teachers = teacherInfoService.getTeachers(map);
    171. //如果没有可用班主任
    172. if (teachers.size() == 0 || teachers == null) {
    173. teacher.setTeacherId(classInfo.getTeacher().getTeacherId());
    174. teacher.setTeacherName("暂无剩余教师");
    175. teachers.add(teacher);
    176. }
    177. model.addObject("teachers", teachers);
    178. model.addObject("grades", grades);
    179. return model;
    180. }
    181. /**
    182. * 修改班级信息
    183. * @param classInfo 班级信息
    184. * @param request
    185. * @param lastTeacherId 上一个班主任编号,修改其 班主任状态
    186. * @return
    187. */
    188. @RequestMapping(value="edit/class/class", method=RequestMethod.PUT)
    189. public String isUpdateClass(ClassInfo classInfo, HttpServletRequest request,
    190. @RequestParam(value="lastTeacher", required=false) Integer lastTeacherId) {
    191. //修改上一教师不为班主任状态
    192. if (lastTeacherId != null) {
    193. String returnMsg = isChangeTeacherWork(0, lastTeacherId);
    194. if (returnMsg != null) {
    195. request.setAttribute("error", "修改教师班主任状态 对应教师编号有误");
    196. return "/error";
    197. }
    198. }
    199. //修改当前教师为班主任状态
    200. String returnMsg = isChangeTeacherWork(1, classInfo.getTeacher().getTeacherId());
    201. if (returnMsg != null) {
    202. request.setAttribute("error", "修改教师班主任状态 对应教师编号有误");
    203. return "/error";
    204. }
    205. logger.info("修改班级 "+classInfo);
    206. int row = classInfoService.isUpdateClass(classInfo);
    207. if (row < 1) {
    208. logger.error("班级 "+classInfo+" 修改失败");
    209. request.setAttribute("error", "班级修改失败,请稍后再试!");
    210. return "../error";
    211. }
    212. return "redirect:/classes";
    213. }
    214. /**
    215. * 获取指定年级下的班级
    216. * @param gradeId 年级编号
    217. * @param response
    218. * @throws IOException
    219. */
    220. @RequestMapping(value="/gradeclass/{gradeId}", method=RequestMethod.GET)
    221. public void getClassesByGradeId(@PathVariable("gradeId") Integer gradeId,
    222. HttpServletResponse response) throws IOException {
    223. logger.info("获取年级 "+gradeId+" 下的班级集合");
    224. List classes = classInfoService.getClassByGradeId(gradeId);
    225. String json = gson.toJson(classes);
    226. response.getWriter().print(json);
    227. }
    228. /**
    229. * 修改教师(班主任)工作状态
    230. * @param status 是否为班主任标识
    231. * @param teacherId 教师编号
    232. */
    233. private String isChangeTeacherWork(int status, Integer teacherId) {
    234. logger.info("修改教师 "+teacherId+" 的状态为 "+status);
    235. teacher.setIsWork(status);
    236. if (teacherId == null) {
    237. logger.error("修改教师班主任状态 对应教师编号有误");
    238. return "修改教师班主任状态 对应教师编号有误";
    239. }
    240. teacher.setTeacherId(teacherId);
    241. int row = teacherInfoService.updateTeacherIsWork(teacher);
    242. return null;
    243. }
    244. @RequestMapping("/stuCount")
    245. public void getStudentCountForClass(
    246. @RequestParam(value="gradeId", required=false) Integer gradeId,
    247. HttpServletResponse response) throws IOException {
    248. Map map = classInfoService.getStudentCountForClass(gradeId);
    249. String json = StudentCount.createBarJson(map);
    250. response.getWriter().print(json);
    251. }
    252. /**
    253. * 预添加班级处理
    254. * @return
    255. */
    256. @RequestMapping("/preStudentCount")
    257. public ModelAndView preStudentCount() {
    258. ModelAndView model = new ModelAndView();
    259. //获取年级信息
    260. List grades = gradeInfoService.getGrades();
    261. model.setViewName("admin/charts/studentCount");
    262. model.addObject("grades", grades);
    263. return model;
    264. }
    265. }

    年级信息

    1. package com.taohan.online.exam.handler;
    2. import java.util.List;
    3. import java.util.Map;
    4. import javax.servlet.http.HttpServletRequest;
    5. import org.apache.log4j.Logger;
    6. import org.springframework.beans.factory.annotation.Autowired;
    7. import org.springframework.beans.factory.annotation.Qualifier;
    8. import org.springframework.stereotype.Controller;
    9. import org.springframework.web.bind.annotation.*;
    10. import org.springframework.web.servlet.ModelAndView;
    11. import com.google.gson.Gson;
    12. import com.taohan.online.exam.po.GradeInfo;
    13. import com.taohan.online.exam.service.GradeInfoService;
    14. /**
    15. *
    16. *

      Title: GradeInfoHandler

    17. *

      Description: 年级

    18. * @author: taohan
    19. * @date: 2018-8-14
    20. * @time: 上午10:03:33
    21. * @version: 1.0
    22. */
    23. @Controller
    24. public class GradeInfoHandler {
    25. @Autowired
    26. @Qualifier("gson")
    27. private Gson gson;
    28. @Autowired
    29. private GradeInfoService gradeInfoService;
    30. private Logger logger = Logger.getLogger(GradeInfoHandler.class);
    31. /**
    32. * 获取所有年级集合
    33. * @return
    34. */
    35. @RequestMapping(value="/grades")
    36. public ModelAndView getGrades() {
    37. logger.info("获取所有年级");
    38. ModelAndView model = new ModelAndView();
    39. model.setViewName("admin/grades");
    40. //获取所有年级
    41. List grades = gradeInfoService.getGrades();
    42. model.addObject("grades", grades);
    43. return model;
    44. }
    45. /**
    46. * 预添加年级处理
    47. * @param map
    48. * @return
    49. */
    50. @RequestMapping("/preAddGrade")
    51. public String preAddGrade(Map map) {
    52. logger.info("年级添加预处理");
    53. map.put("grade", new GradeInfo());
    54. return "admin/gradeedit";
    55. }
    56. /**
    57. * 添加年级
    58. * @param grade
    59. * @param request
    60. * @return
    61. */
    62. @RequestMapping(value="/grade", method=RequestMethod.POST)
    63. public String isAddGrade(GradeInfo grade, HttpServletRequest request) {
    64. logger.info("添加年级 "+grade);
    65. if (grade == null) {
    66. logger.error("年级 "+grade+" 为空");
    67. request.setAttribute("error", "年级添加失败,请稍后再试!");
    68. return "error";
    69. }
    70. int row = gradeInfoService.isAddGrade(grade);
    71. if (row < 1) {
    72. logger.error("年级添加失败");
    73. request.setAttribute("error", "年级添加失败,请稍后再试!");
    74. return "error";
    75. }
    76. return "redirect:grades";
    77. }
    78. /**
    79. * 预修改年级处理
    80. * @param gradeId 待修改年级编号
    81. * @param map
    82. * @return
    83. */
    84. @RequestMapping(value="/grade/update/{gradeId}", method=RequestMethod.GET)
    85. public String preUpdateGrade(@PathVariable("gradeId") Integer gradeId,
    86. Map map) {
    87. logger.info("年级修改预处理");
    88. map.put("grade", gradeInfoService.getGradeById(gradeId));
    89. return "/admin/gradeedit";
    90. }
    91. /**
    92. * 修改年级信息
    93. * @param grade
    94. * @param request
    95. * @return
    96. */
    97. @RequestMapping(value="/grade/update/grade", method=RequestMethod.PUT)
    98. public String isUpdateGrade(GradeInfo grade, HttpServletRequest request) {
    99. logger.info("修改年级 "+grade+" 的信息");
    100. int row = gradeInfoService.isUpdateGrade(grade);
    101. if (row < 1) {
    102. logger.error("年级修改失败");
    103. request.setAttribute("error", "年级修改失败,请稍后再试!");
    104. return "/error";
    105. }
    106. return "redirect:/grades";
    107. }
    108. /**
    109. * 删除年级
    110. * @param gradeId
    111. * @param request
    112. * @return
    113. */
    114. @RequestMapping(value="grade/del/{gradeId}", method=RequestMethod.DELETE)
    115. public String isDelGrade(@PathVariable("gradeId") Integer gradeId, HttpServletRequest request) {
    116. logger.info("删除年级 "+gradeId);
    117. int row = gradeInfoService.isDelGrade(gradeId);
    118. if (row < 1) {
    119. logger.error("年级删除失败");
    120. request.setAttribute("error", "年级删除失败,请稍后再试!");
    121. return "/error";
    122. }
    123. return "redirect:/grades";
    124. }
    125. }

    如果也想学习本系统,下面领取。回复:198ssm

     

  • 相关阅读:
    重塑 Google 搜索、Android 13 新版发布,这届 I/O 大会为开发者带来了什么?
    如何管理oralce口令文件和参数文件
    java 查看内存方式
    List的使用
    牛客网---活动运营刷题笔记
    【Javascript】在对象的方法里访问自己的属性
    App分发的原理ipa分发系统需求
    【操作系统实验】线程的创建+信号量通信
    Android13版本新特性介绍
    计算机网络第三章——数据链路层(二)
  • 原文地址:https://blog.csdn.net/hanyunlong1989/article/details/126339492