当前位置: 首页 > news >正文

学习进度4/15

第八步:编写 Controller 控制层(最终接口,登录安全 + 2.8 培训模块,可直接 Postman 测试)

  1. UserController.java(登录、改密码、安全校验接口)
    java
    运行
    package com.demo.controller;
    import com.demo.service.UserService;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.web.bind.annotation.PostMapping;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RequestParam;
    import org.springframework.web.bind.annotation.RestController;

@RestController
@RequestMapping("/user")
public class UserController {
@Autowired
private UserService userService;

// 登录接口,严格实现所有安全规则
@PostMapping("/login")
public String login(@RequestParam String username, @RequestParam String password) {return userService.login(username, password);
}// 修改密码接口,校验密码格式
@PostMapping("/updatePwd")
public String updatePwd(@RequestParam Long userId, @RequestParam String newPwd) {return userService.updatePwd(userId, newPwd);
}

}
2. CourseController.java(培训模块 - 课程 CRUD)
java
运行
package com.demo.controller;
import com.demo.entity.Course;
import com.demo.service.CourseService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.List;

@RestController
@RequestMapping("/course")
public class CourseController {
@Autowired
private CourseService courseService;

// 查询所有课程
@GetMapping("/list")
public List<Course> list() {return courseService.getCourseList();
}// 新增课程
@PostMapping("/add")
public String add(@RequestBody Course course) {courseService.addCourse(course);return "新增课程成功";
}// 修改课程
@PostMapping("/update")
public String update(@RequestBody Course course) {courseService.updateCourse(course);return "修改课程成功";
}// 删除课程
@PostMapping("/delete")
public String delete(@RequestParam Long id) {courseService.deleteCourse(id);return "删除课程成功";
}

}
3. QuestionController.java(培训模块 - 题库管理)
java
运行
package com.demo.controller;
import com.demo.entity.Question;
import com.demo.service.QuestionService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.List;

@RestController
@RequestMapping("/question")
public class QuestionController {
@Autowired
private QuestionService questionService;

@GetMapping("/list")
public List<Question> list() {return questionService.getQuestionList();
}@PostMapping("/add")
public String add(@RequestBody Question question) {questionService.addQuestion(question);return "新增题目成功";
}

}
4. PaperController.java(培训模块 - 试卷管理)
java
运行
package com.demo.controller;
import com.demo.entity.Paper;
import com.demo.service.PaperService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.List;

@RestController
@RequestMapping("/paper")
public class PaperController {
@Autowired
private PaperService paperService;

@GetMapping("/list")
public List<Paper> list() {return paperService.getPaperList();
}@PostMapping("/add")
public String add(@RequestBody Paper paper) {paperService.addPaper(paper);return "新增试卷成功";
}

}
5. ExamController.java(培训模块 - 考试交卷、自动判分、查成绩)
java
运行
package com.demo.controller;
import com.demo.entity.ExamRecord;
import com.demo.service.ExamService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.List;

@RestController
@RequestMapping("/exam")
public class ExamController {
@Autowired
private ExamService examService;

// 交卷+自动判分
@PostMapping("/submit")
public String submit(@RequestParam Long userId,@RequestParam Long paperId,@RequestParam List<Long> questionIds,@RequestParam List<String> userAnswers) {int score = examService.submitExam(userId, paperId, questionIds, userAnswers);return "交卷成功,本次得分:" + score;
}// 查询个人考试成绩
@GetMapping("/myScore")
public List<ExamRecord> myScore(@RequestParam Long userId) {return examService.getMyScore(userId);
}

}
第九步:启动项目 + 测试
运行 DemoApplication.java,启动端口 8080
测试接口(Postman 直接调用)
登录:POST http://localhost:8080/user/login?username=xxx&password=xxx
课程管理:GET http://localhost:8080/course/list
考试交卷:POST http://localhost:8080/exam/submit

http://www.jsqmd.com/news/798357/

相关文章:

  • 微服务最可怕的不是拆分,而是数据库“慢性死亡”
  • 基于MyBlog开源个人博客系统 搭建与二次开发学习记录
  • 天津滨海京津冀防水补漏瓷砖修复哪家好 这几家正规机构别错过 - 鲁顺
  • 终极指南:如何用D2DX让《暗黑破坏神2》在现代电脑上完美运行
  • 5G NR的OFDM和DFT-s-OFDM到底怎么选?看完这篇你就懂了(附参数集详解)
  • EDEM与Fluent耦合接口实战:用‘米糠-碎米-铁’案例详解颗粒-流体双向耦合全流程
  • 【PHPer转GO】之高并发场景避坑宝典
  • C语言完美演绎9-28
  • Windows系统mqdscli.dll文件丢失无法启动程序解决
  • 2026 南京厂房装修公司怎么选?为何工业企业倾向南京力天装饰 - 小艾信息发布
  • 汽车电子电源架构演进与同步降压稳压器设计
  • 3步突破语言屏障:Translumo实时屏幕翻译解决方案实战手册
  • YOLOv11 改进 - 注意力机制 DCAFE双坐标注意力:并行坐标注意力 + 双池化融合
  • 学习进度4/13
  • DHCP 服务器总结:概念、原理与实验详解
  • 如何用League Akari一站式提升你的英雄联盟游戏体验:免费终极指南
  • 函数式编程实现 - 学员管理系统 - 06
  • 如何在5分钟内免费绕过iPhone激活锁:applera1n完整使用指南
  • 别再死记硬背公式了!用Python的NumPy和SciPy实战理解广义逆矩阵(附代码)
  • SAP财务顾问必看:蓝冲、红冲与反记账的实战配置详解(附后台路径)
  • 学习进度4/12
  • 成都装修公司推荐(2026最新)|口碑好、施工稳、售后快 - 成都人评鉴
  • 学习进度4/11
  • Unlock Music音乐解锁终极教程:5分钟掌握加密音频解密技巧
  • 漳州全屋定制服务商
  • Python多线程编程核心知识点整理
  • 5分钟掌握暗黑2存档修改秘籍:彻底告别重复刷怪烦恼
  • C语言完美演绎9-29
  • 机器人仿真新手别慌!保姆级CoppeliaSim(V-REP)中文界面与核心概念速览
  • Speechless:你的微博数字记忆永久保存方案,告别内容丢失焦虑