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