From addf9b30f65dcb3d36d664264825bed1486afa97 Mon Sep 17 00:00:00 2001 From: awinx Date: Sat, 21 Dec 2024 22:22:25 +0800 Subject: [PATCH] learn02 --- test05/pom.xml | 5 ++- .../src/main/java/test05/aop/TimeAspect.java | 21 +++++++++ .../main/java/test05/config/WebConfig.java | 2 +- .../test05/controller/LoginController.java | 19 +++++++- .../test05/controller/studentController.java | 43 ++++++++++++++++--- .../exception/GlobalExceptionHandler.java | 14 ++++++ .../service/impl/StudentServiceImpl.java | 12 ++++-- .../resources/test05/mapper/StudentMapper.xml | 11 +++++ 8 files changed, 115 insertions(+), 12 deletions(-) create mode 100644 test05/src/main/java/test05/aop/TimeAspect.java create mode 100644 test05/src/main/java/test05/exception/GlobalExceptionHandler.java diff --git a/test05/pom.xml b/test05/pom.xml index f0925ed..335651c 100644 --- a/test05/pom.xml +++ b/test05/pom.xml @@ -95,7 +95,10 @@ fastjson2 2.0.53 - + + org.springframework.boot + spring-boot-starter-aop + diff --git a/test05/src/main/java/test05/aop/TimeAspect.java b/test05/src/main/java/test05/aop/TimeAspect.java new file mode 100644 index 0000000..f65ebb0 --- /dev/null +++ b/test05/src/main/java/test05/aop/TimeAspect.java @@ -0,0 +1,21 @@ +package test05.aop; + +import lombok.extern.slf4j.Slf4j; +import org.aspectj.lang.ProceedingJoinPoint; +import org.aspectj.lang.annotation.Around; +import org.aspectj.lang.annotation.Aspect; +import org.springframework.stereotype.Component; + +@Slf4j +@Component +@Aspect +public class TimeAspect { + @Around("execution(* test05.service.*.*(..))") + public Object recordTime(ProceedingJoinPoint joinPoint) throws Throwable { + long begin = System.currentTimeMillis(); + Object result = joinPoint.proceed(); + long end = System.currentTimeMillis(); + log.info(joinPoint.getSignature()+"耗时:{}ms", end-begin); + return result; + } +} diff --git a/test05/src/main/java/test05/config/WebConfig.java b/test05/src/main/java/test05/config/WebConfig.java index b908e2f..4ff2d09 100644 --- a/test05/src/main/java/test05/config/WebConfig.java +++ b/test05/src/main/java/test05/config/WebConfig.java @@ -18,6 +18,6 @@ public class WebConfig implements WebMvcConfigurer { @Override public void addInterceptors(InterceptorRegistry registry) { - registry.addInterceptor(loginCheckInterceptor).addPathPatterns("/**").excludePathPatterns("/login"); + registry.addInterceptor(loginCheckInterceptor).addPathPatterns("/**").excludePathPatterns("/userAction/login"); } } diff --git a/test05/src/main/java/test05/controller/LoginController.java b/test05/src/main/java/test05/controller/LoginController.java index 6b72c42..fd2481d 100644 --- a/test05/src/main/java/test05/controller/LoginController.java +++ b/test05/src/main/java/test05/controller/LoginController.java @@ -1,5 +1,6 @@ package test05.controller; +import io.jsonwebtoken.Jwt; import jakarta.servlet.http.HttpSession; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.CrossOrigin; @@ -8,6 +9,9 @@ import org.springframework.web.bind.annotation.RestController; import test05.pojo.Result; import test05.pojo.User; import test05.service.UserService; +import test05.utils.JwtUtils; + +import java.util.Map; @RestController @RequestMapping("/userAction") @@ -23,8 +27,12 @@ public class LoginController { @RequestMapping("/login") public Result login(String username, String password, HttpSession session) { if (session.getAttribute("user") != null) { - return Result.success(session.getAttribute("user")); - }else if (username==null || password==null) { + String loginName = ((Map)(JwtUtils.parseJwt((String)session.getAttribute("user")).get("data"))).get("name"); + if (loginName.equals(username)) { + return Result.success(session.getAttribute("user")); + } + } + if (username==null || password==null) { return Result.error("login fail"); } Result res = userService.login(new User(username, password)); @@ -34,4 +42,11 @@ public class LoginController { return res; } + @CrossOrigin + @RequestMapping("/logout") + public Result logout(HttpSession session) { + session.removeAttribute("user"); + return Result.success(); + } + } diff --git a/test05/src/main/java/test05/controller/studentController.java b/test05/src/main/java/test05/controller/studentController.java index 22da065..a2b294d 100644 --- a/test05/src/main/java/test05/controller/studentController.java +++ b/test05/src/main/java/test05/controller/studentController.java @@ -1,13 +1,16 @@ package test05.controller; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.CrossOrigin; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import test05.pojo.Result; +import test05.pojo.Student; import test05.service.StudentService; +@CrossOrigin(maxAge = 3600) @RestController -@RequestMapping("/studentAction/") +@RequestMapping("/studentAction") public class studentController { private final StudentService studentService; @Autowired @@ -15,10 +18,40 @@ public class studentController { this.studentService = studentService; } - @RequestMapping("get") - public Result get() { + @RequestMapping("/get") + public Result get(Student student, Integer page, Integer pageSize) { Result result = new Result(); - - return result; + if (pageSize == null) { + pageSize = 10; + } + if (page == null) { + page = 1; + } + return studentService.getStudent(student, page, pageSize); + } + + @RequestMapping("/add") + public Result add(Student student) { + if (student == null || student.getId() != -1) { + return Result.error("bad request"); + }else{ + return studentService.addStudent(student); + } + } + + @RequestMapping("/edit") + public Result edit(Student student) { + if (student == null || student.getId() == -1) { + return Result.error("bad request"); + } + return studentService.updateStudent(student); + } + + @RequestMapping("/delete") + public Result delete(Student student) { + if (student == null || student.getId() <= 0) { + return Result.error("bad request"); + } + return studentService.deleteStudent(student); } } diff --git a/test05/src/main/java/test05/exception/GlobalExceptionHandler.java b/test05/src/main/java/test05/exception/GlobalExceptionHandler.java new file mode 100644 index 0000000..0524c15 --- /dev/null +++ b/test05/src/main/java/test05/exception/GlobalExceptionHandler.java @@ -0,0 +1,14 @@ +package test05.exception; + +import org.springframework.web.bind.annotation.ExceptionHandler; +import org.springframework.web.bind.annotation.RestControllerAdvice; +import test05.pojo.Result; + +@RestControllerAdvice +public class GlobalExceptionHandler { + @ExceptionHandler(Exception.class) + public Result ex(Exception e){ + e.printStackTrace(); + return Result.error("server error"); + } +} diff --git a/test05/src/main/java/test05/service/impl/StudentServiceImpl.java b/test05/src/main/java/test05/service/impl/StudentServiceImpl.java index faa0138..72b4bd5 100644 --- a/test05/src/main/java/test05/service/impl/StudentServiceImpl.java +++ b/test05/src/main/java/test05/service/impl/StudentServiceImpl.java @@ -31,16 +31,22 @@ public class StudentServiceImpl implements StudentService { @Override public Result addStudent(Student student) { - return null; + + //TODO:校验数据 + + int count = studentMapper.insertStudent(student); + return Result.success(count>0); } @Override public Result updateStudent(Student student) { - return null; + int count = studentMapper.updateStudent(student); + return Result.success(count>0); } @Override public Result deleteStudent(Student student) { - return null; + int count = studentMapper.deleteStudent(student); + return Result.success(count>0); } } diff --git a/test05/src/main/resources/test05/mapper/StudentMapper.xml b/test05/src/main/resources/test05/mapper/StudentMapper.xml index f808c37..b14435b 100644 --- a/test05/src/main/resources/test05/mapper/StudentMapper.xml +++ b/test05/src/main/resources/test05/mapper/StudentMapper.xml @@ -22,6 +22,17 @@ ORDER BY N_STUDENT_ID DESC LIMIT (#{page}-1)*#{pageSize},#{pageSize} + INSERT INTO t_student (VC_STUDENT_CODE, VC_STUDENT_NAME, N_SEX, N_GRADE, N_MAJOR, VC_DETAIL)