- 学生选课系统
- 一、采用技术
- 二、功能实现
- 1.响应到前端的结果集
- 2.解决前后端跨域问题
- 3.登录
- 4.学生查询
- 5.增加学生
- 6.编辑学生信息
- 7.删除学生
一、采用技术学生信息管理系统采用前后端分离方式实现,通过前后端交互数据实现学生信息的增删查改。
二、功能实现 1.响应到前端的结果集后端:springboot+mybatis-plus
前端:vue+element-ui
package com.student.course.bean.response; import lombok.Data; @Data public class Result2.解决前后端跨域问题{ private Integer code = CodeEnum.SUCCESS.getCode(); private String msg = CodeEnum.SUCCESS.getMsg(); private boolean success = Boolean.TRUE; private T data; private long total; public Result(){} public static Result buildEmptySuccess(){ return new Result<>(); } public static Result buildEmptySuccess(T t){ Result result = buildEmptySuccess(); result.setData(t); return result; } public static Result buildEmptySuccess(T t, long total){ Result result = buildEmptySuccess(t); result.setTotal(total); return result; } public static Result buildFailure(String msg){ Result result = new Result<>(); result.setCode(null); result.setMsg(msg); result.setSuccess(false); return result; } public static Result buildFailure(Integer code,String msg){ Result result = new Result<>(); result.setCode(code); result.setMsg(msg); result.setSuccess(false); return result; } public static Result buildFailure(CodeEnum codeEnum){ Result result = new Result<>(); result.setCode(codeEnum.getCode()); result.setMsg(codeEnum.getMsg()); result.setSuccess(false); return result; } public boolean isSuccess(){ return success; } }
后端:设置允许跨域的配置文件
package com.student.course.config;
import org.springframework.web.servlet.config.annotation.CorsRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
public class WebMvcConfig implements WebMvcConfigurer {
@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("
function addInterceptors (axiosInstance) {
//请求拦截器
axiosInstance.interceptors.request.use( config => {
return config
}, error => {
console.log("请求发送失败",error)
MessageBox.alert("请求发送失败","错误提示")
});
//响应拦截器
axiosInstance.interceptors.response.use( resultWrapper => {
let result = resultWrapper.data
if (result.success){
return result;
}else{
MessageBox.alert(result.msg,"错误提示")
}
}, error => {
console.log("请求发送失败",error)
MessageBox.alert("服务器响应失败","错误提示")
return Promise.reject("服务器响应失败")
});
}
let getInstancee = axios.create()
addInterceptors(getInstancee);
let postInstance = axios.create({
method: "post",
headers: {
"Content-Type": "application/x-www-form-urlencoded"
},
transformRequest: [
function (data,headers){
console.log("data:",data)
qs.stringify(data)
}
]
})
addInterceptors(postInstance);
let jsonpostInstance = axios.create({
method: "post",
})
addInterceptors(jsonpostInstance);
export function doGet (config) {
return getInstancee(config);
}
export function doPost (config) {
return postInstance(config);
}
export function dojsonPost (config) {
return jsonpostInstance(config);
}
3.登录
验证用户名、密码成功后,生成token,并发送给前端
servie层:
@Override
public Result login(LoginRequest loginRequest) {
LambdaQueryWrapper qw = new LambdaQueryWrapper<>();
qw.eq(Manager::getUser_name,loginRequest.getUser_name())
.eq(Manager::getPwd,loginRequest.getPwd());
Manager manager = managerMapper.selectOne(qw);
if(manager==null){
return Result.buildFailure("用户名或密码不正确");
}
JwtManagerVO jwtManager = generateToken(manager);
return Result.buildEmptySuccess(jwtManager);
}
实现如下:
后端获取数据如下:
采用分页插件查询
Page工具类:
package com.student.course.util;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.student.course.bean.response.Result;
import java.util.List;
public class PageUtil {
public static void startPage(Integer pageNow, Integer pageSize){
PageHelper.startPage(pageNow,pageSize);
}
public static Result> wrapPageData(List queryList){
PageInfo pageInfo = new PageInfo<>(queryList);
return Result.buildEmptySuccess(queryList,pageInfo.getTotal());
}
}
service层:
@Override
public Result> searchStudent(CommonSearchReq searchReq) {
PageUtil.startPage(searchReq.getPageNow(),searchReq.getPageSize());
List students = studentMapper.queryList(searchReq);
return PageUtil.wrapPageData(students);
}
查询如下:
@Override
@Transactional(rollbackFor = Exception.class)
public void add(StudentAddReq addReq) {
LambdaQueryWrapper qw = new LambdaQueryWrapper<>();
qw.eq(Student::getNo,addReq.getNo());
Integer count = studentMapper.selectCount(qw);
if(count > 0){
return;
}
Student student = new Student();
BeanUtils.copyProperties(addReq,student);
studentMapper.insert(student);
}
实现如下:
service层:
@Override
@Transactional(rollbackFor = Exception.class)
public void updateById(StudentUpdateReq studentUpdateReq) {
Student student = new Student();
BeanUtils.copyProperties(studentUpdateReq,student);
studentMapper.updateById(student);
}
实现如下:
@Override
@Transactional(rollbackFor = Exception.class)
public void deleteById(Long id) {
studentMapper.deleteById(id);
}
实现如下:



