大家好,今天将开始写项目,在这里我不会分享项目的从0到1如何构成的,而是在我做项目的过程中遇到的坑和一些干货技术点,能让伙伴们提升的技术点。
1. 今天准备做一个手机验证码登录的功能。
在这里我先分享我所用的东西,再给大家分享一个坑。
1.1 首先大家在做手机验证码登录的时候无非就是几个步骤
1.输入手机号,前端进行校验手机号格式
2.手机号传到后端,后端再做二次校验手机号格式是否正确
1.2 这里大家肯定都知道后端进行校验手机号格式无非就是使用正则表达式来进行校验。给大家上代码
1.2.1 手机号正则表达式
*public static String PHONE_REGEX
="^1([38][0-9]|4[579]|5[0-3,5-9]|6[6]|7[0135678]|9[89])\d{8}$";*
1.2.2 然后就是使用Pattern这个类进行校验了,上代码.
public static boolean isValidPhoneOrEmail(String regex , String loginWay){
boolean matches = regex.matches (loginWay);
return matches;
}
1.3 这里校验大家肯定觉得很简单,其实我在这里分享不仅是代码,还有一种思想就是大家可以把类似这种方法分装成我们的类供我们以后使用。这样代码看起来是不是更加清爽呢。
1.4 生成随机码 下面这个依赖可是一个好东西,俗称万能宝箱,基本上什么样的工具类都有.
我就可以利用他生成随机码,很简单的一行代码。
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>5.7.17</version>
</dependency>
1. 生成随机码
String randomCode=RandomUtil.randomNumbers (6);
1.5 这里就没有实现真正的发送验证码了简单的使用日志打印下就OK了,如果想要实现的小伙伴可以去对接第三方平台,比如阿里云,网易云等短信服务去实现。
1.6 这里前期使用单体模式保存到session中,后期会使用到redis去保存,以及用redis去实现分布式锁等redis的很多特性,喜欢的小伙伴关注我持续更新........
session.setAttribute ("randomCode", randomCode);
log.info ("发送验证码成功............" + randomCode);
1.7 最后给大家分享的就是一个坑了,在正则表达式匹配的结果中比如上面的那个方法
isValidPhoneOrEmail() 如果返回true 则表示匹配错误,如果返回false则返回匹配成功。在这里我们的
小心态差点被正则玩炸了,我以为是我的正则表达式错误,结果最后上天不负有心人,看到一个兄弟的回答。
让我恍然大悟........希望小伙伴在学习的正则的时候不要遇到这个坑哦....
旁白:因为在实习,所以更新的内容比较少,也比较慢,如果大家对Java实习方面的问题也可以问我哦。你的鼓励就是对我写文章最大的动力,拜拜啦!