Pārlūkot izejas kodu

feat: 创建项目

DingXiaoYu 2 gadi atpakaļ
vecāks
revīzija
e33d93e410

+ 10 - 0
src/main/java/com/seecoder/BlueWhale/Configure/LoginInterceptor.java

@@ -9,6 +9,16 @@ import org.springframework.web.servlet.HandlerInterceptor;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 
+/**
+ * @Author: DingXiaoyu
+ * @Date: 0:17 2023/11/26
+ * 这个类定制了一个登录的拦截器,
+ * SpringBoot的拦截器标准为HandlerInterceptor接口,
+ * 这个类实现了这个接口,表示是SpringBoot标准下的,
+ * 在preHandle方法中,通过获取请求头Header中的token,
+ * 判断了token是否合法,如果不合法则抛异常,
+ * 合法则将用户信息存储到request的session中。
+*/
 @Component
 public class LoginInterceptor implements HandlerInterceptor {
 

+ 15 - 0
src/main/java/com/seecoder/BlueWhale/Configure/MyWebMvcConfig.java

@@ -5,6 +5,21 @@ import org.springframework.context.annotation.Configuration;
 import org.springframework.web.servlet.config.annotation.CorsRegistry;
 import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
 import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
+
+/**
+ * @Author: DingXiaoyu
+ * @Date: 0:17 2023/11/26
+ *
+ * 这个类实现了WebMvcConfigurer接口,
+ * 表示会被SpringBoot接受,
+ * 这个类有两个作用:配置拦截器和跨域。
+ * addInterceptors方法配置了拦截器,
+ * 添加了loginInterceptor作为拦截器,
+ * 并且设置除了register和login的所有接口都需要通过该拦截器。
+ * addCorsMappings方法配置了跨域,
+ * 表示任何格式的请求都能通过,
+ * 包括了请求地址、请求端域名、请求方法(GET、POST等)、请求头。
+*/
 @Configuration
 public class MyWebMvcConfig implements WebMvcConfigurer {
     @Autowired

+ 4 - 5
src/main/java/com/seecoder/BlueWhale/Controller/UserController.java

@@ -1,19 +1,18 @@
 package com.seecoder.BlueWhale.Controller;
 
 import com.seecoder.BlueWhale.Service.UserService;
-import com.seecoder.BlueWhale.Util.SecurityUtil;
 import com.seecoder.BlueWhale.VO.ResultVO;
 import com.seecoder.BlueWhale.VO.UserVO;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.*;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
 
 @RestController
 @RequestMapping("/api/user")
 public class UserController {
 
-    @Autowired
-    SecurityUtil securityUtil;
-
     @Autowired
     UserService userService;
 

+ 5 - 0
src/main/java/com/seecoder/BlueWhale/Exception/BlueWhaleException.java

@@ -1,5 +1,10 @@
 package com.seecoder.BlueWhale.Exception;
 
+/**
+ * @Author: DingXiaoyu
+ * @Date: 0:26 2023/11/26
+ * 你可以在这里自定义Exception
+*/
 public class BlueWhaleException extends RuntimeException{
 
     public BlueWhaleException(String message){

+ 8 - 0
src/main/java/com/seecoder/BlueWhale/Exception/GlobalExceptionHandler.java

@@ -4,6 +4,14 @@ import com.seecoder.BlueWhale.VO.ResultVO;
 import org.springframework.web.bind.annotation.ExceptionHandler;
 import org.springframework.web.bind.annotation.RestControllerAdvice;
 
+/**
+ * @Author: DingXiaoyu
+ * @Date: 0:26 2023/11/26
+ * 这个类能够接住项目中所有抛出的异常,
+ * 使用了RestControllerAdvice切面完成,
+ * 表示所有异常出现后都会通过这里。
+ * 这个类将异常信息封装到ResultVO中进行返回。
+*/
 @RestControllerAdvice
 public class GlobalExceptionHandler {
     @ExceptionHandler(value = BlueWhaleException.class)

+ 1 - 0
src/main/java/com/seecoder/BlueWhale/PO/User.java

@@ -32,6 +32,7 @@ public class User {
     @Column(name = "password")
     private String password;
 
+    //必须注意,在Java中用驼峰,在MySQL字段中用连字符_
     @Basic
     @Column(name = "create_time")
     private Date createTime;

+ 5 - 0
src/main/java/com/seecoder/BlueWhale/Util/SecurityUtil.java

@@ -6,6 +6,11 @@ import org.springframework.stereotype.Component;
 
 import javax.servlet.http.HttpServletRequest;
 
+/**
+ * @Author: DingXiaoyu
+ * @Date: 0:28 2023/11/26
+ * 你可以通过这个类的方法来获得当前用户的信息。
+*/
 @Component
 public class SecurityUtil {
 

+ 10 - 0
src/main/java/com/seecoder/BlueWhale/Util/TokenUtil.java

@@ -10,6 +10,16 @@ import org.springframework.stereotype.Component;
 
 import java.util.Date;
 
+/**
+ * @Author: DingXiaoyu
+ * @Date: 0:28 2023/11/26
+ * 这是一个token的工具类,
+ * 设置了过期时间为1天。
+ * getToken方法用来获取token,
+ * token中包含了用户的Id、密码信息以及到期时间。
+ * verifyToken方法用来检验token是否正确。
+ * getUser方法用来从token中获得用户信息。
+*/
 @Component
 public class TokenUtil {
     private static final long EXPIRE_TIME = 24 * 60 * 60 * 1000;

+ 22 - 1
注意事项.md

@@ -13,10 +13,31 @@
 
 ## 3. 了解项目细节
 ### 1. Controller层
+1. 知道标记`Bean`注解`@Component`、`@Controller`、`@RestController`。
+2. 了解`Rest`风格请求,知道`@Controller`和`@RestController`的区别。
+3. 知道GET请求和POST请求的区别,以及对应注解`@RequestMapping`、`@GetMapping`、`@PostMapping`。
+4. 知道几种传参方法,以及其注解`@PathVariable`、`@RequestParam`、`@RequestBody`。
+5. 知道自动装配注解`@Autowired`。
+6. 会用浏览器测试GET请求,用`Postman`等工具测试请求。
 ### 2. Service层
+1. 知道标记`Bean`注解`@Service`。
 ### 3. Mapper层
+1. 知道标记`Bean`注解`@Repository`。
+2. 会使用`JPA`进行数据库操作。
 ### 4. VO和PO
+1. 知道VO和PO的使用场景。
+2. 知道`Lombok`注解`@Getter`、`@Setter`、`@NoArgsConstructor`、`@AllArgsConstructor`。
+3. 知道PO如何与数据库表格属性一一对应。
+4. 了解ResultVO使用泛型返回数据。
 ### 5. 用户认证与token
+1. 了解`token`的原理。
+2. 知道标记`Bean`注解`@Configuration`。
+3. 知道拦截器的配置方法。
 ### 6. 处理Exception
+1. 了解项目内自定义`Exception`的方法,并且用优雅的方式返回。
 ### 7. 枚举类的处理
-### 8. 跨域问题处理
+1. 了解枚举类的优点。
+2. 知道枚举类和前端、数据库的交互方式。
+### 8. 跨域问题处理
+1. 了解跨域问题。
+2. 知道配置跨域的方法。