本项目非原创,我也只是作为一名初学者跟着成熟的up主一起敲代码而已。视频来源于:
Springboot项目实战 easypan 仿百度网盘 计算机毕业设计 简历项目 项目经验(后端)_哔哩哔哩_bilibili
Springboot项目实战 easypan 仿百度网盘 计算机毕业设计 简历项目 项目经验(后端)共计28条视频,包括:项目简介、项目架构、环境配置等,UP主更多精彩视频,请关注UP账号。
https://www.bilibili.com/video/BV1qV4y1d7zY
在哔哩哔哩闲逛看到这个项目,感觉还不错,于是想要学习一下这个项目怎么写。项目日记也会同步更新。(本人不分享本项目源码,支持项目付费)
本项目大量采用了先前项目中已经写好的代码,而且UP主讲的也很快。因此不适合新手作为自己的第一个项目。
今日完结任务:
1.完成了注册接口
再讲整个业务逻辑之前,我们要先引入一下AOP。在这个接口中我们用到了AOP。原因是因为:在用户登录这块,有大量的参数需要做非空校验以及其他校验,
因此我们就顺势去做一个切面。
核心思路为:
通过
注解
的方式
标记方法
,利用AOP思想创建一个切面,在切面中实现对标记方式中字段的填充,然后再运行原方法。这样就实现了在
不改动原方法
的前提下,实现了对代码的优化升级。
创建AOP切面:
创建
注解GlobalInerceptor
来标识需要对哪些方法进行拦截参数校验
创建
注解VerifyParam
来标识需要对哪些参数进行校验以及校验什么内容
开始写切面,完成切入点表达式来精准拦截方法,这里写了很多校验代码,我就不一一贴出来了。
讲完了这个AOP之后,我们再回到业务层,看一看注册接口:
业务逻辑:
Controller层先对传入的图片验证码进行了校验,通过之后再进入注册界面。
需要注意的是:无论本次注册是否成功,这次用到的验证码都应该废弃,所以我们try finally语句。在finally部分使用session的removeAttribute方法来删除掉会话中的验证码。
接下来让我们看一看servel层的具体实现:
这里先使用select查询当前邮箱是否已经被注册过。之后校验邮箱验证码,校验成功之后生成userInfo对象写入用户表中。需要注意的是我们不明文存储用户密码,而是存储MD5加密后的密码。
在比较的时候,我们也是用用户输入的密码的MD5加密字符与数据库中用户真正密码的MD5加密字符进行对比
。
2.完成了登录接口:
登录接口的Controller层还是和注册接口一样:
判断验证码是否正确并且销毁验证吗,最后进入severl层执行真正逻辑
。
所以我们现在转到Server层来看一看业务逻辑:
整个登录就接口一共就五个板块:
-
校验用户密码和用户状态
-
更新用户最后一次登录时间
-
将当前用户状态写入session
-
判断当前用户是否为管理员
-
更新当前用户已经使用内存的空间
这里在比较密码的时候,直接就用传递到后端的密码和数据库中MD5加密后的字符串 。这是因为我们的密码在前端就已经进行MD5加密了,发送的并不是明文密码,而是MD5加密。
杂项知识点:
今天记录一下之前一直没有看懂的一个类:
配置中心类,主要存储发送验证码邮件的模板 以及 个人网盘的各种配置,比如已经使用空间大小。
之前一直错误(shabi)以为这是一个写入Redis的类,也不知道咋想的,哎,因为这个小问题导致我写项目一直难受,服了。
感觉今天的收获就是:
看代码已经不能急躁,不能先入为主。不然很容易造成错误,今天算是亲自领略到了。要沉下心来仔细看一看代码,不要急躁,不要急躁!
今天还不错,学到了很多。最大的领悟就是:
看代码的时候不要急躁,不要急躁,不要急躁,不要急躁!
如果我的内容对你有帮助,请
点赞,评论,收藏
。创作不易,大家的支持就是我坚持下去的动力!
欢迎使用Markdown编辑器
你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。
我们对Markdown编辑器进行了一些功能拓展与语法支持,除了标准的Markdown编辑器功能,我们增加了如下几点新功能,帮助你用它写博客:
全新的界面设计 ,将会带来全新的写作体...
文章目录请求字段自定义
校验
一、自定义
校验
类二、定义
切面
拦截请求,对controller中的save方法,进行
参数
校验
三、自定义异常以及异常捕获四、实体类添加
校验
五、测试
请求字段自定义
校验
一、自定义
校验
类
为
实现
对输入字节长度的
校验
,定义ByteLength
校验
接口,在ByteLengthValidatorImpl中通过isValid()方法
实现
对字节长度的
校验
。
自定义
校验
类的
实现
代码如下,下...
在项目中,我们会对入参做
校验
,这些
参数
的
校验
逻辑我们会写很多次.能不能将这些
参数
的
校验
逻辑提出来呢?答案是可以.Spring 有自己的validate工具方法,我个人感觉不是太好远,想自己定制更加契合自己项目的
校验
机制.经过哆哆嗦嗦的研究,有点结果,现在贴出来,大家一起看看!
我曾经写过一个工具类,就是会在Service层的方法上加上自定义的注解,利用Spring
aop
拦截标注注
@Target({ElementType.TYPE,ElementType.METHOD,ElementType.FIELD})
@Retention(RetentionPolicy.RUNTIME)
public @interface StoreIdValid ...
AOP
(Aspect-Oriented Programming,面向
切面
编程):是一种新的方法,是对传统OOP(Programming,面向对象编程)的补充
AOP
的主要编程对象是
切面
(asspect),而
切面
模块化横切关注点。
在应用
AOP
编程时,仍需要定义公共功能,但可以明确的定义这个功能在哪里,以什么方式应用,并且不必修改受影响的类,这样一来横切关注点...
AOP
简单说明:
AOP
为Aspect Oriented Programming的缩写,意为:面向
切面
编程,通过预编译方式和运行期动态代理
实现
程序功能的统一维护的一种技术。在日常
开发
当中经常用来记录日志,方法跟踪、事务,权限等
切面
方法说明:
@Aspect -- 作用是把当前类标识为一个
切面
供容器读取
@Pointcut -- (切入点):就是带有通知的连接点,在程序中主要体现为书写切入点表达...
import org.apache.commons.lang3.exception.ExceptionUtils;
import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.annotation.AfterThrowing;
import org.aspectj.lang.annotation.Aspect;
impo...
answer:
spring mvc 默认自带的
校验
机制 @Valid + BindingResult,
但这种默认
实现
都得在Controller方法的中去接收BindingResult,从而进行
校验
.
if (result.hasErrors()) {
List allErrors = result.get