播放记录设计与开发 2021-01-14 表设计 play_record CREATE TABLE `play_record` ( `id` int(11) unsigned NOT NULL AUTO_INCREMENT, `user_id` int(11) DEFAULT NULL, `video_id` int(11) DEFAULT NULL, `current_num` int(11) DEFAULT NULL COMMENT '当前播放第几集', `episode_id` int(11) DEFAULT NULL COMMENT '当前播放第几集视频id', `create_time` datetime DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4; Model package net.xdclass.online_xdclass.model.entity; import java.util.Date; /** * 小滴课堂 播放记录 * * `id` int(11) unsign....
VideoOrder下单接口 2021-01-14 RequestEntity package net.xdclass.online_xdclass.model.request; import com.fasterxml.jackson.annotation.JsonProperty; public class VideoOrderRequest { @JsonProperty("video_id") private int videoId; public int getVideoId() { return videoId; } public void setVideoId(int videoId) { this.videoId = videoId; } } Controller package net.xdclass.online_xdclass.controller; import net.xdclass.online_xdclass.model.request.VideoOrderRequest; import net.xdclass.online_xdclass.service.VideoOrderService; impor....
自定义拦截器 2021-01-13 自定义拦截器 package net.xdclass.online_xdclass.interceptor; import com.fasterxml.jackson.databind.ObjectMapper; import io.jsonwebtoken.Claims; import net.xdclass.online_xdclass.utils.JWTUtils; import net.xdclass.online_xdclass.utils.JsonData; import org.apache.commons.lang3.StringUtils; import org.springframework.web.servlet.HandlerInterceptor; import org.springframework.web.servlet.ModelAndView; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.....
JWT登录解决方案 2021-01-13 session共享、分布式缓存 单机tomcat应用登录检验 sesssion保存在浏览器和应用服务器会话之间 用户登录成功,服务端会保存一个session,当然客户端有一个sessionId 客户端会把sessionId保存在cookie中,每次请求都会携带这个sessionId 分布式应用中session共享 真实的应用不可能单节点部署,所以就有个多节点登录session共享的问题需要解决 tomcat支持session共享,但是有广播风暴;用户量大的时候,占用资源就严重,不推荐 使用redis存储token: 服务端使用UUID生成随机64位或者128位token,放入redis中,然后返回给客户端并存储在cookie中 用户每次访问都携带此token,服务端去redis中校验是否有此用户即可 分布式应用下登录检验解决方案 JWT 什么是JWT JWT 是一个开放标准,它定义了一种用于简洁,自包含的用于通信双方之间以 JSON 对象的形式安全传递信息的方法。 可以使用 HMAC 算法或者是 RSA 的公钥密钥对进行签名 简单来说: 就是通过一定规范来....
用户注册接口 2021-01-13 # 手机号的唯一性 为了保证手机号的唯一性,在phone字段上添加UNIQUE索引 //增加唯一索引 CREATE TABLE `user` ( `id` int(11) unsigned NOT NULL AUTO_INCREMENT, `name` varchar(128) DEFAULT NULL COMMENT '昵称', `pwd` varchar(124) DEFAULT NULL COMMENT '密码', `head_img` varchar(524) DEFAULT NULL COMMENT '头像', `phone` varchar(64) DEFAULT '' COMMENT '手机号', `create_time` datetime DEFAULT NULL COMMENT '创建时间', PRIMARY KEY (`id`), UNIQUE KEY `phone` (`phone`) ) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8; 又或者可以根据手机号查询用户信息,判断用户是否已经存在(手机号已经....
Springboot2.x整合Swagger3.X 2021-01-12 引入依赖 <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.4.1</version> <relativePath/&g....
自定义异常 2021-01-12 自定义异常 XDException src/main/java/net/xdclass/online_xdclass/exception/XDException.java package net.xdclass.online_xdclass.exception; import net.xdclass.online_xdclass.utils.JsonData; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.web.bind.annotation.ControllerAdvice; import org.springframework.web.bind.annotation.ExceptionHandler; import org.springframework.web.bind.annotation.ResponseBody; /** * 异常处理类 */ @ControllerAdvice public class CustomExceptionHandler {....