00:00
在刚才内容中呢,给大家演示了JDS的相关操作,咱们分别演示了几种不同的数据类型,用JDS到底该怎么操作,那咱们下面呢,通过JD来完成一个实例,让大家在进一步感受一下JS中的切换操作,那这实例我们来做什么呢?咱们来做一个手机验证码,一个操作就来模拟一下这个过程,那过程怎么做,我们来看一下啊,在我的课件中里边写到。我们想实现的,输入一个验证码,然后验证码是随机生成的,六位的这么一个数字验证码,让他在两分钟内有效,这种效果各位同学应该都见过,比如咱们在网上操作中经常收到验证码,而验证码是不是有一个有效时间呀,比如说两分钟有效,五分钟有效,然后这里边我们进行验证,如果你相同成功,不相同失败。另外还有第三点,我们让每个手机每天只能输入三次,就只能发送三次验证码,如果超过三次,它就不能再进行发送,所以这里边我们就来模拟一下这个验证码发送过程。
01:16
当然这个过程中呢,我们可以写个页面,当然咱们考虑到核心部分,咱就专注于写我们的JD操作,我们就不写页面了,然后通过方法做调用。如果各位同学感兴趣,可以把页面加到我们这个功能中,咱们重点就写我们的Java代码中的这个部分,那这个怎么做?下面给各位我来分析一下,咱先分析一下这过程该怎么实现,然后咱们通过代码把这个我们来写一下。那大家看啊,首先第一个我们这里边怎么做,各位看到它的第一步就是咱们需要随机生成一个六位是不是一个数字的验证码呀,这是咱们的第一个操作,那这个怎么作,大家想一下,我这里写一下啊,第一个操作我们要生成一个就是随机的六位的一个验证码,是一个数字的一个验证码,那怎么实现,大家想一下这怎么做。
02:13
应该并不复杂,在我们Java中有一个内,它叫做random,通过它是不是能生成里面一个方法,就那个new int,就nice的int,然后用它进行实现,所以这是它的第一个操作,咱们用random能生成一个六位的数字验证码,应该简单,然后里边我们看第二个,就这句话。在两分钟之内有效,那各位说这个该怎么实现出来,我写一下啊。让我们的验证码在两分钟内有效,那大家说这怎么做呀,怎么实现,咱们是不是可以把这个验证码放到咱们的red里面去啊,同时设置它那个就是过期时间,是这个两分钟,也就是120秒,是不是可以这么做,就是通过red设置它这个过期时间,让它在两分钟之内有效,所以这是里边的第二部分,咱们通过red的过期时间进行操作,比如说咱们用方法会做个实现。
03:18
然后除了这个之外,我们看下一个啊,这个简单就是验证码是否相同,那我们从re中把这个取出来,然后判断你输入验证码跟他是否一致,如果一样的话就返回成功,不一样返回失败是不是可以了,就ready中取验证码,然后咱们做判断,这是咱们的第三个就是验证的过程。给大家写一下啊,第三个脚的位置。我们要判断验证码是否一致,那咱的做法就是从read里边获取验证码,和你输入的验证码进行比较是不是可以了,如果一样的话就成功,不一样的话那就失败,这是里边的第三部分,然后除了这个之外,里边还有最后一个操作,就这个操作这里写到,啊,每个手机每天只能输入三次,就只能发送三次验证码,当你这个手机再发送第四次,那里边就不能发送了,这是咱们的第四个要求。
04:23
那这个怎么做,大家可以想一下,这个稍微复杂一点啊,就是每个手机每天。只能发送。三次验证码不能发送,第四次发送,第四次提示它就不能再发送了,那怎么做,大家想一下啊,在我们这个ready中有个操作叫那个in可操作。应该知道啊,因可瑞做什么,就是每次是不是加一啊,那那根据它是可以做个判断,用音可瑞每次我们发送之后,把这值加一,当这个值呢,如果说它大于二或者说等于三就大于二的时候,那我们提示它就不能再进行。
05:07
发送了。所以咱们就是通过这个英可瑞可以做一个这么一个判断,这个是我们的第四部分,所以现在呢,我把这个就是案例我们该怎么实现给各位做了一个分析,咱们再重复一遍,然后我写代码做实现。首先第一部分我们要生成六位的数字验证码,那咱们用random这些时间,第二个让验证码在两分钟之内有效,咱把它放到re中,设置过期时间是120秒两分钟,然后第三个验证从RA中取,和我们输入的验证码做个比较,如果一样的话,成功不一样失败。最后一个每个手机每天只能输入三次,那咱们用英可瑞每次发送之后加一,当这个值呢大于二或者等于三的时候,就不能再进行发送了,所以这是我们分析的这么一个过程。
06:01
各位要知道我们现在这个需求该怎么进行实现。那下面呢,咱们就来写代码,把这功能我们给它最终来做一下,咱们开始写这个代码。现在呢,我们在里边,比如我们来创建一个类,这个类我起名我就叫这个for code手机验证码,然后把它创建,创建之后呢,在里边咱们先写上一个问方法,然后最终在里面测试,那这里边呢,为了咱们操作方便,我就专门写几个方法咱做测试,我在代码中呢,就不写页面部分了,咱就直接写上我们的核心的JD的操作部分,然后咱通过方法调用,最终做实现。各位感兴趣可以把页面调到里面去,我这里边只写核心部分,那首先呢,我先写第一个方法,咱们先生成一个就是六位的这么一个数字的验证码,把这个我们先做一下,那我们来写一下啊,我就来一个public,呃,咱为了方便我就sta,然后里边返回一个词缀,我们叫get code是一个验证码。
07:11
然后在里边我们怎么做呢?很简单,用咱们Java中一个工具类,叫做random。Random这么一个工具类,我们random等于上一个random,咱把这个先做个创建,这是我们的第一步,New上一个random这么一个类,然后new上之后呢,我们可以调用random里边的这么一个方法,它叫做n int里边传入就是你从几到几的值,比如咱们给它生成就是十以内的值,因为咱们要生成六个,所以这里边我给它加上一个。不循环写下啊,Int I等于零。这里边有这个I。小于。六然后来一个哎,加加,咱们把里面这个值给它,就放到我们的这里边来,就是放到我们的这个循环中来啊,这是一个分号啊。
08:10
然后放到之后呢,它每次生成值里边咱给它就是写一个名字,比如叫这个ran,然后在外边加上一个变量,每次往里边就拼接上这个值,比如我们叫扣等于一个,就是一个空,然后在里边每次给它拼接上这个值,就是加等于这个叫round,最终咱们把这扣做一个re t就可以了,所以这样的话呢,咱们通过一个小的方法生成这么一个六位的这么一个验证码,就是在里边我们做了一个实现,这是我们写的这个,然后写完之后咱们把这方法做一个简单的测试,看这值能不能得到。比如说这个扣还给他测试一下啊,我把扣做输出,然后咱们执行一下,看一下效果。
09:02
大家看里边这个六位验证码随机的是不生出来,比如咱们再进行一次。每次应该都不一样,所以这是我们写的第一个方法,是说一个六位的验证码,这是咱们的第一个,然后这个写完之后,下面我们写第二个方法,第二个方法做什么呢?大家看不到分析图上,因为咱们要让我这个验证码放到re中,并且让每个手机每天只能发送三次,所以咱把这两部分几个方法中去,然后把最终验证的再小一个方法中去,所以我们下面再来建两个方法,那我写一下第二个方法,第二方法做的就是。让每个手机每天只能发送。三次,然后验证码放到咱们的read中去设置它的过去时间,这是第二个方法,那我来写一下啊,我来一个public c,我就来一个wait,然后这个方法起个名字,比如叫这个啊,我们起个名字。
10:09
叫这个验证啊,这么一个就是code啊这个名字,然后在里边呢,咱给它传入这么两个值吧,比如第一个值,我们就传这个手机号。我们写一个叫。Phone,然后第二个值就传入这个验证码啊,比如我们叫code啊,咱们传入两个值,然后传入之后,下面我们来写这操作,因为操作中呢,咱们肯定要操作这个read,所以这里边第一部分咱先把这个red做个连接,我们通过JDS溜上一个JDS,然后里边加入它的IP和端口号,我把这部分给它直接复制过来,因为跟之前写的应该是一样的。这个咱给它就拿过来了,所以这是第一部分,先连上red,然后连上write,之后呢,咱之前代码中啊,其实少写了一步,最终这个JD呢,应该做一个关闭,之前呢,暂时忘了关闭了啊,就有一个close给各位注意一下啊,之前忘了写这个了,所以现在把它连上,然后连上之后呢,然后你要做操作,那操作怎么做呢?因为咱们现在既要保证每个手机每天只能发送三次,另外还要保证验证码,所以咱们这里边把这两部分单独存储验证码存到一个key中,把你的手机这个发送次数存到一个key中,所以在里边我们来做个操作,我写下注释啊,第一个就是。
11:38
连接red,然后第二个呢,比如咱们来就是拼接一下我们这个key。这个key里边呢,咱们写两个,第一个就是手机发送次数的这个key的拼接,咱们给他约定个规则,然后第二个验证码,这个key的一个拼接,那我们来写一下啊,比如第一个key,我来一个string,我们就叫这个啊,咱就叫这个,呃,Count keep就是这个次数,然后count key里边呢,我给它加上一个规则,比如这个规则呢,我叫这个就是验证。
12:15
这个code,然后给它加上,比如我们这个手机号fo尾,再加上这么一个PD的值,我们叫count,用它只有我的K啊,当然这是我随便拼的规则,你可以写别的规则,但是保证要证明到我们的手机号肯定是唯一的,然后这里边呢,我们再拼上一个验证码的K,比如我叫这个扣K。在里边我也给他想一个规则,比如说也是这个验证码。后面加上我们的手机号,然后最后加上这个值,我们叫code,所以现在把两个K我们就拼出来了,后面咱们存的话用这个作为K,后面加上咱们的值,然后这个做到之后再看下一个就来做这个事情,每个手机每天只能发送三次来做这个事情,那怎么做呢?第一个咱们先从ready中取下这个值,看能不能取到,我们加个get,然后加这个叫count key。
13:20
就看这个次数能不能取到,比如说我叫count,如果说这个值呢,它等于空,那表示咱们之前应该没有发送过,不知道各位是否能跟上啊,我这个可以取什么呢?就取你手机的发送次数,如果说你这值就是E。如果说这个count这个值写一下啊,它等于,那那就表示呢,在rate中没有咱们发送次数。那没有发送次数证明,你是不是就是。第一次发送,这应该能明确,如果第一次发送的话,那咱把这数量是不是给它设置成一就可以了,就是设置你的发送次数是一,那我们来设置一下啊,用A里边这个方法,就是咱用这个set。
14:10
Ex,然后大家看这方法啊,有这么一个特点。首先里边有这么几个参数。第一个参数key,第二个过期时间,第三个value,因为咱要保证每天它里边就是只能发三次,所以它的key我们就叫count key,它的时间就是每天,因为一天嘛,大家注意有24小时,每小时有60分钟,每分钟有60秒,这保证就是一天的秒数,最后一个加上它的值,这个值就是一,因为咱们是第一次发送,所以它的值设置成一,这是我们写的这个操作,然后咱们继续判断第二个else if。那X if就表示啊,这个值不等于空,如果不等于空的话,那我们判断,假如这个值呢,它小于等于二,那咱把这值给它每次加一是可以的,做一个计数嘛,就是它最终肯定不能超过三,那我们来判断一下,就这count这个值它要小于等于二,那判断呢,因为咱要相加,所以咱们给它做个转换啊,我们来一个这个。
15:19
就是count,看这个值,如果count的这个值呢,小于等于二,就是它没有大于二,还不是三,那咱把这个值就是我的发送次数给它,就是加一又可以了,用这里面这个in可瑞加上你这个count key,把它就加一了,就是这个逻辑不是各位是否能听懂啊?我再说一遍,当咱们从RA中查这个发送次数的时候,如等于空,证明你之前没发送过它里边。肯定是第一次,第一次的话,咱们设它的值就是一,当你这个值呢,比如说不等于空,但是它还小于等于二,证明你可能是第二次,可能是第三次,那咱们需要摆值给它加一又可以了,然后还有最后一种情况,Else。
16:08
If啊,我们也加一个l if了。如果说这里边的值它大于二,或者说等于三。我们来一个count,它大于二,那现在证明呢,你已经发送了这个。三次,那就不能再进行发送了,如果不能发送的话,我们给它做个输出写一下啊,就是现在就是你。今天的发送次数已经超过了三次,就是不能再发送了,然后不能再发送的话,咱就可以把这JDC给它,最终做一个close给它,就关闭一下就可以了,所以大家看这段代码就是来设置一下,我这个每个手机每天只能发送三次,因为我的P里边包含我的手机号,通过它可以做这么一个就是判断。这一部分就完成了,然后这个完成之后咱往下看,因为现在我们肯定有这个就是验证码的部分,我写一下啊,咱们就是。
17:09
发送到验证码,要放到我们的red里面去,那咱们给他放一下啊,我通过方法get code。先把这个验证码给它得到,比如我们叫v code,然后得到之后呢,把它就放到我们的re里面去,那我们来放一下啊。Ex,然后放的话,它的K就是刚才写这个扣的这个K。然后它的过期时间两分钟嘛,120秒,它的值就是这个v code,现在验证码就放到了我们的ready中去,然后最终把这我们做一个close关闭。所以这是我们写的第二个方法,每个手机只能发送三次验证码放到read中,设置过期时间是120秒或者说两分钟,咱通过这个过程做这个时间这个方法就完成了,然后完成之后呢,我们还有最后一个方法,就是做这个验证码的一个校验的这么一个功能啊,这个就简单了,给大家快头写一下啊,Public c word,比如说我们叫这个就是验证码的一个就业啊,比如我们就叫get。
18:27
Code啊,找这个纸。然后在校验中呢,咱也是传用这个手机号,包括你这个扣的啊,给他都做个传递。然后传递之后在里边我们做这个就是最终的验证,那怎么验证呢,首先。先从瑞中获取那验证码,然后我们再做一个比较,那咱们来获取一下啊。先连接上我们的。然后通过它来获取到里边这个验证码,就是通过它的key来获取,这个key呢,我在这里边应该已经做了一个这么一个拼接,咱把它。
19:09
拿过来,这个叫扣T。得到我们就是里边这个验证码,这个得到得到之后呢,下面咱们做一个判断。那我来判断一下啊,这个代码各位应该都会写了,咱们加上一个。If就是这个ready code,点上e code,如果说它们相同的话,那表示验证码一致。我们做过输出,比如输入这个成功。然后来一个else,他们不一样,那我们输出一个,那就是失败。这里写下失败,然后最终别忘记把这个ad给它最终关掉。Close,所以这是我们写的第三个方法,验证码校验方法,现在这个方法我们就完成了啊,当然完成中呢,其实我们的这个方法中应该不需要扣的,所以这个给他就先去掉啊,应该不需要扣的,现在三个方法我们就完成了,我们看一下啊,第一个方法生成六位的验证码,第二个方法判断每个手机每天能发送三次验证码,放到read中,设置时间120秒,第三个就是验证码的一个校验。
20:30
那这个完成之后,咱们最终做个测试,首先第一个我们先测试一下啊,咱先做一个就是。模拟一个验证码的一个发送,那咱就来调一下里面这个方法就可以了,我来调一下啊,里面就传入一个手机号,比如说我随便写个手机号啊。随便写一个,当我这个方法一执行,那现在就第一个能做次数判断,然后第二个他能把这数据放到咱们的re中去,那咱来测试一下啊,为了明显这个re,我先给它清空一下。
21:08
Flash BB啊,先清空一下啊。然后咱们测试一下啊,现在我把这方法执行一下。咱给他做一个执行。然后直行之后,因为第一次嘛,这里边没有什么输出,我们到里边看一下,来一个K星号,大家看这值是不是有了,然后咱们看到这个Co的这个值,把这个值是什么给他得到一下啊,我们来一个get Co,大家看验证码是不是这个值,然后咱们再得到这里边这个count count值是不是一,所以现在第一次就可以了,然后第一次可以之后,我们下面给它做一个就是校验。校验的话呢,咱就来调用刚才这个方法,Get red code里边传入手机号,还有刚才咱们得到这个验证码做个校验,验证码就是里边的这个纸,我把它直接复制过来啊,咱们简单做一个模拟上的测试。
22:08
这是验证码,这是手机号,现在把它执行一下,大家看最终输出告诉咱们是不是成功了,比如说我随便写一个,然后咱们再去执行,那他告诉咱们你看到是不是就失败了啊,所以这就是一个模拟验证码发送过程,那模拟之后,比如现在啊,我再来发送一次。因为咱们说到它最多只能发送三次嘛,那我再发送第二次,这个肯定也成功了,然后到里边咱也来试一下,看一下这个值啊,这个值我给它连一下啊,连一下我的red啊,刚才应该断掉啊连一下。下段啊,然后连上之后,我们来一个K星号,在里边得到这个值,就这个count,你看这个值是不是二,然后这个扣的。
23:01
写下啊code它的值是一个进的验证码,所以现在第二次成功了,那比如说咱们再发送一次,第三次是不是也成功了,咱们看一下这个count这个值是不是三影,所以大家看到目前我这手机号是不是已经发送了三次,而我现在比如说我在发送第四次。再来看特点,什么特点,他给我们做了提示,也就是说直行到了里边的这个方法,说你今天发送次数已经超过了三次,那你就不能再进行发送,包括大家看这值是不是还是三,它就不能再加一了,因为它只能发送三次。所以这样的话呢,我们现在就把这个验证码发送过程通过里边几个方法做了一个模拟,主要就是发送的模拟过程,还有最终验证的过程,所大家通过这个例子能进一步掌握这一例子中的机关操作啊,这个例子我们就最终完成了,所以大家注意我这个分析过程和最终代码的编写流程。
24:06
各位再来看啊,我们这个代码呢,虽然说完成了,但是目前有一个小问题啊,问题是什么?就是在这个地方,刚才咱们测试呢,我们已经发动了三次,包括最终这个数量是变成三能,那各位看啊,目前有问题,比如现在啊,我这里边我把代码再执行一次。你看这里边提出我们说已经发送了,然后咱到re中来看一下,我们来看啊,首先你看啊,第一个它那个count还是三,但你注意看它的验证码。是不是变了,也就是说啊,我们这一行结束,其实它并没有停止,它是不是又画了一次了,虽然说它的数量是三,我这里边判断之后这个代码还执行了,所以代码咱需要进一步完善,那怎么完善呢?应该说很简单,在这里边让它结束是不?就是当你这个次数达到了三次,咱就不能再发了,比如说后面代码就不能执行了,那怎么做?咱直接加上一个re return是不是就可以了啊,所以少了这么一个小bug啊,咱给他解决一下,加一个蕊退,也就是我再说一遍啊,当你的次数就是是第一次,是第二次,第三次都可以发作,当你超过三次肯定就不能发了,那我们就直接提示他把这次关闭,最终加个铝退,加铝之后这个代码就不执行了,如果你不加铝退,那这代码还未执行,它还会再进行发送,所以咱们啊做了这么一个完善,比如说现在这个验证码发送的案例,我们就最终完成了。
我来说两句