00:00
我们再来看下面一个小知识点,下面一个小知识点是注册啊,关于注册这个功能的,咱们先把这个小知识点看了,看了之后呢,我们再完成这个书城里面的注册。啊,这个cap呢,它不能算是一个什么特别大的技术点,仅仅是咱们书城那个项目里面的注册,咱们需要用到这个验证码技术,所以呢,我们就需要它,那首先第一点我们需要先搞清楚为什么需要验证码。大家需要先搞清楚。如果没有验证码,那别人会恶意的去攻击你。会恶意的去进行攻击。所以我们就需要有验证码。啊,那咱们做的验证码呢,也是比较简单的,现在咱们验证码是越做越复杂。为什么呢?因为以前的验证码其实是很很好就能够攻破的。啊,一开始我们出出现的是数字,后来发现数字不行,那怎么办?数字加英文字母混合,后来发现也很容易被攻破被识别,那怎么办呢?我们又改成加减乘除算术。变成算术之后发现又不行。啊,那怎么办呢?我们就出现请依次点击什么什么汉字是吧,依次去点击,哎,又出现这个。
01:07
还有一些验证码是什么呢?你给拖动滚动条,它有个地方有个有一个小图案是吧,你得这样的重合应该能想象出来吧?还有什么验证码呢?你拖动滚动条的时候,它有个图片,本来是倒过来的,你拖动它能够滚,能够顺时针滚动,滚动你要把它变成这个正正着的。哎,见过宝啊,应该都有的。啊,然后还有一些,还有一些验证码是什么呢。啊,他会问你。啊,在一大堆图片里面,请你去找出哪些对吧,哪些是火车啊,或者哪些是自行车啊是吧,等等等等是不是啊,那这种其实验证码是比较复杂的。好。为什么需要验证码?就是防止别人恶意的去给我发送请求。所以,所以我要去。在别人给我发请求之前,先让别人能够通过验证码能够识别出他不是一个机器给我发请求,而是真的是人为的给我发请求。
02:04
因为我们可以通过爬虫技术,我们可以通过爬虫去伪装出一大堆的请求。一大堆的这个浏览器请求,给父亲发请求。啊,所以服务极端,你要能够进行反扒。是吧,你要能够识别出,那么验证码是其中的一个技术。OK。那行。第二个我们就要来看一下这个capture怎么来用。如何使用非常简单,第一步,咱们需要把家宝把它拿进来。啊,第一步我们需要把价包把它加进来,那行吧,咱们先新建文件夹。叫library-capture。那我先把这个夹包先找到啊,这个夹包夹包应该在library文件夹,然后其中一个叫capture。K开头K。K,这个could you。把它扔进来。根据喂。
03:00
那行,我把它粘进来了,右键。ADD as library。那行啊,我让我当前的项目也把他加进来。找到我当前的model。找到它,找到depend,点击加号,点击library,把capture加进来,没错吧,把它加进来应用。好,然后呢,我这个artifact是不是没有引用这个包啊,把它艾特一下。OK,下面咱们来看一下吧,这玩意儿怎么来用?Capture不要这么说啊,大家请大家搜Java web空格capture,要不然大家是搜到的很多的,这个都是用后面框架代码写的啊,那没必要咱们就看这个。呃,哎呀,这也是用后面的内容做的啊。这个太讨厌了。不能不能就找一个,找一个正常的吗。
04:00
这个大家都是抄来抄去的啊,无所谓了。我来找一个Java web的。哎,这个人写的减数,减数话一般还是稍微靠谱一点的。它也是使用的麦粉,不管它啊,不管它那行吧,咱们就自己来自己来看吧,啊,我们就自己来看,第一步我们把加包加进来,那么人家用的是麦粉,我们后面会讲的MY不着急的啊,用的目的也是自动的去把这个capture这个加包把它加进来行吗?先不管它,那第二步我们需要在web.X文件当中需要做配置。第二步,我们需要在web.X文件当中做配置,给谁做配置就给这个验证码做配置,我们验证码当中有一个核心的叫capture。就这玩意儿。啊,咱们来试试好。第一步,加包,我已经加进来了。第一步,添加价。第二步,在web.XL文件中配置,或者叫注册。
05:05
注册。Capture。病。设置啊,并设置验证码图片的相关属性。好,咱们来设置一下。所以呢,我就找到这,打开它,找到webx文件在这,好第一个。So。好,打开它。打开它只有一个,打开再打开capture,找到打开就是它吧,啊就这一个。好,CTRLC到这CTRLV。然后class。看到诶,它有自动提示,那很好啊,再来mapping。那么这个URL pattern,我们写什么呢?一二段我们写什么呢?比如说我们就写某某某点JPG,哎,感觉像是个图片。
06:03
那我问你,我这边写点JPG点度,或者甚至于不写后缀行不行,无所谓无所谓的同学们啊,那行吧,咱们就照抄capture。啊,他用JPG,那咱们也用JPG,前面的斜杠不能少啊。就这样吧。这个我就把它写好了。然后呢,其他的一些属性呢,咱们可以先不配置。这里面in啊,这些属性我们可以先不配置。简单读一点读一下啊剥的啥意思哦。边框嘛,就是你的验证码图片到底要不要边框嘛,再来风点。com。哎,验证码里面字体的颜色。Character space,哦,这个设置的不是常规的啊,其实还有一些常规的,没关系,我要不要带着大家来看一下,点进去。好。或者看这啊看这也行,它这里面内容反正不多,这边有个叫cons好,就看这个。
07:00
这个设置的很多。这边有个叫capture点包的,是不是表示是否需要边框哦。看不见点播的点color。边框的颜色,这个叫noise color noise是什么呢?就是我一个验证码呀,我一个验证码。如果说这上面直接显示数字或者显示字母,那给别人看的话就太简单了。这样的人家有些它不是人肉眼识别出来的,它是通过机器的一些图片图像的一些识别技术,它也能把你的验证码识别过来,那怎么办呢?哦,我要在这个验证码图片上设置一些干扰信息。比如说下面上面加一些横线啊,加一些条纹啊是吧,那机器它对对机器程序就有一些干扰人嘛,它总归还是能看得出来的是吧?哎,这个叫no。再来。比如说你看字体的颜色啊,字体的大小看space。
08:03
再往下。图片的宽度,图片的高度你看是不是都有啊,包括包括什么呢?包括我这个验证码到底要用几个,我这验证码到底是四个四个字符还是六个字符还是八个字符,诶character点。开给他点死菌,哎哟,点死菌是什么呢?哎,点死菌你可以设置我的验证码到底在哪一个集合里面去选,比如说这个验证码全全字母。这个验证码全输字0123456789,诶这叫死君,叫开死君。啊,就是这样的。所以我们就可以去简单的去进行设置。好,设置完了啊,我们已经配好了,塑料的卖品已经配好了,下面我们就要在前端我们写一个image图片。然后让它后面这个显示的某某某点击BG,就是我们所写的U2PART。咱们一起来试试呗,OK。
09:02
这个先不看啊,一会儿再看。回到这儿。这是第二步,注册第三步。在H对标页面上。编写一个image标签。然后设置src,设置src。等于啊,等于。Capture等于capture对应的URL pattern。那行吧,咱们试一试。回到这边来。CTRLCCTRLV,我们叫哈零二。然后在HELLO02页面上来,咱们来写一个一麦机吧。Image sc等于一个值。OK。那么我们刚才的u pattern对应的是不是这玩意儿?那行吧。Can you see。回到这CTRLV可以了不,哎,这样我就把它写完了。
10:03
我们来试一试,看看行不行,启动一下。好,先让它启动着啊。这个生成的都不好啊,之前这个我看过一个,看过一个,看过一个网页,基本上我一搜就能搜到了,怎么现在搜的都是广告是吧。好,他已经出来了,咱们来试试吧,啊,我们刚刚要访问的是什么?是吧哈,哎是吧,Hello,零二呀零二.ht秒敲回车是不是有了呀。这不就是个图片吗?是吧,同学们,那行,它有边框,能不能把它边框去掉。可以的啊。我们来试一下。因为我刚刚什么属性都没加嘛,我仅仅配了一个select嘛,如果你想给它配各种各样的属性,那你就在这边写in你的para para name,这个para就是我们刚刚在这里面所看的常量,明白我的意思吗?
11:15
比如说这里面字体这边一个叫border是吧,Border border的颜色CTRLC。边框的颜色,咱们写个read。啊,是这个红颜色再来。还有比如说我看一下啊,我现在这里面是有有字母也有数字是吧。再再来一个。比如说street设置这玩意儿。它就是表示你的可选的范围,把它拿进来。然后呢,我的这个value,我就写ABCDEFGHIJK,写ABCDEFG吧,少一点。ABCDEFG就表示在这个范围里面去选字符。就这意思。那行吧,咱们刷新一下,让他再启动,咱们再继续来搜,我给大家找一个网页啊。
12:08
这个先关掉啊,刚才那个cookie的路径,到时候我把路径找好了复制给大家。那行看一下啊。再来看一下hello02.ht.HTML。你看是不红框框,然后这里面的字你注意了,它就没有数字了啊,并且它只能在ABCDEFG里面选,能听懂不啊,所以这玩意不难,但是你不要去死记硬,死记硬背,不需要去死记背啊。属性设置,哎,这边有,哎这个还蛮好。你看这从这到这,它的各种的什么属性的描述,是不是都在这边啊啊都有的,那你自己去看吧,行吧,同学们。然后呢,比如说这个干扰啊,干扰的时间类叫default noise,我也可以设置一个叫无干扰的,你看我现在这个图片啊。
13:06
回到这儿。回到。这里上面是不是有一些干扰的一些线啊,我们可以把干扰的线可以把它去掉。干扰的线把它去掉,它这里面有一个实线。打开。我们找一下啊。叫no noise,就这玩意儿。啊,就叫no noise,我们只要把它配上,那么它就不需要这个叫叫不需要干扰线了。哎,就是这样的,所以咱们配置我给大家试一下啊,回到这边来,我们再配一个。好,我们只要配上你的噪音的时间内。噪音的实现类。找到他。刚才有一个叫noise在哪里?往下。这个noise p是不是实现了呀,就是它CTRLC拷过来,CTRLV放在这儿,然后咱们刚才那个叫no noise是不是它呀。
14:07
右键我看一下啊,右键有个叫copy。No no,我看它有没有提示啊,No。Noise。他不提示是吧,那不提示我就先复制报名,感觉C选V。然后CTRLC到这边CTRLV可以吧,同学们,行,就这样子。好,再来刷新一下。
15:04
好,接着买意思一下吧啊。那行,我们看一下啊。或者直接刷新它刷一下。你看是不是就没有那个所有的噪音了,对吧,这样看起来就稍微清晰一些,就这样吗。好,这是我们做验证码的第一步。第一步,我们先得把这个验证码能够显示出来。啊,把验证码能够显示出来。第二步是什么呢?想象一下我们那个注册页面,你这个注册页面啊,同学们。注册页面,我们回到这儿。或者这样啊。来找一下。在D盘。在这,然后呢,咱们找到。后退一下啊,找到他。来,我们把圆形打开啊。同学们。这边有个验证码。我输用户名输密码,哎,确认密码,用户邮箱验证码输完我点注册,请问我点注册,如果假设没有验证码的话,我们应该是怎么做,我们是不是把用户名啊,密码呀,邮箱啊,是不是保存到数据库啊。
16:10
那现在的问题是什么?现在问题是你先别急着保存。你先用户输入的验证码,先要去校验一下你输的验证码是否正确。大家想想是不是这样的?那我和谁校验?我和谁校验呢?哎,我这文本框里面输入,比如说我输入叫BNBNP是不是,那请问同学们我输的这个验证码和谁校验呢?好了,是这样的,同学们。Cab。好,我们写一下。看不见在。在生成验证码图片时。会同时在筛选啊,会同时将。
17:01
将验证码信息保存到session中。因此。我们在。我们在注册啊,在注册请求时。啊,注册请求时首先将。用户文本文本框中输入的验证码。啊,验证码值和筛选中保存的值进行比较。相等,则进行注册。是吧,同学们就这样子。所以说他其实是往三线里面保存了一分的。那么往三线里面保存一份,往三线里面保存,那那个K叫什么呢。哎,其实K也在这里面。他的这个key。叫capture session_K就这个。啊,就这个值叫capture三弦K。不用举死记硬背啊,大家不要举死记硬背。
18:00
好,看完一遍就可以了,而且我也会给大家一个网页,你只要把网页留着就行啊。所以来。所以呢,你要注意了,我们假设这是个注册页面,我们发起就给某一个select,那么请你这个select从筛选里面去获取就行了。啊,我们试一试看能不能获取到,比如说现在我来写一个。我写个叫capture。零幺意思一下啊,集成。继承继承,继承继承HTTP。好,就是它继承一下,然后咱们就简单一点。Web web。斜杠刚才叫哈零幺是吧,刚才是叫哈零幺吧。叫酷零是吧,要不咱们这个就叫capture。
19:01
零用行吗,同学们?行,咱们这边写个service方法。Service。然后呢,Request。然后呢,Response。那行吧,咱们先获取一下赛。request.get筛选是吧?同学们先获取筛选。HTTP。S线等于它,再来从三线里面去取,看一下能不能取到三线点get at,刚才那个key叫什么?我复制过来了,就它行吗?同学们接着它,我们看看能不能获取到这个值,Object obj等于它。Obj等于它,然后咱们把这个obj把它打印出来,Obj。来吧,试试吧。首先是在这儿。啊,我们得先访问一下他同学们,这玩意其实它并不是一个图片是吧,其实它是一个select它的URL对不对啊同学们。
20:00
然后那个他帮我们产生了验证码,然后呢,它响应到这个地方,而且他还把那个验证码保存到S里面去,紧接着咱们再去访问这个。是不是,然后把它打印出来。行,试一下。太多了。看这啊,Get h你看在这。塔倍是不是叫开B,你看这个常量点开B加三线K是不是就它呀,哎,就是它。
21:00
啊,就是这样的。它对应的就是我们这个常量。就是它,那它对应的不就是字符串吗?行,搞定试试。现在页面已经打开了。我们回到这。行,我先访问的是,呃,我先访问的是是河路零二吧。下回这。那请问图片是不是已经有了?叫b de fe是吧,B de fe这个。B de好像是E吧,我怎么感觉是吧,不行,反正不管他吧,反正就b de吧啊。就B,我就记记前面这个吧,来。我们刚才那个叫什么,是不是叫。是不是叫看一下啊,刚才咱们写的这个是不是叫CL01CTRLC,咱们在这边适当的无所谓了,把这边清掉啊,打印出来就行。CTRLV敲回车,好访问了,咱们看一下控制台是不是BD啊。
22:02
没错吧,你看就是这样的。说不定人家确实往赛季里面丢了一份嘛。那你想一想,按照我们做了我们自己写的CTRL了,我们这个方法方法我们是不是可以在这边参数从请求里面去获取啊,然后再从三线里面去获取啊,然后比较两者是否相等啊,如果相当,我们是不是在调用use什么service的什么计方法呀。行,思路已经有了,下面咱们就快速的把注册写一下。坚持一下啊,讲完这个再休息。好,所以这个我就不看了。我们直接把25拷贝一份。CTRLV,把它变成26。好。杠杠。呃,购物车,购物车,我先把它名字先放上去吧啊。好,Can you see。
23:06
应该是27是吧。应该是27,不应该是26。打开。稍等一下啊。他一连败,选中他再来。好,没错。后面的话,我的购物车的改造也是就用也用这个项目啊,我就不再复制了,那行吧,我现在把它加进来。找到model,点击它,点击import,把27就这个呗。IP点击OK行加进来了,呃,加进来之后,请你把cap也加到当前的这个项目里面,是不是点击加号library就它吧,点击艾行加进来了,然后我们找到rifx,把这玩意删掉,重新新建一个27,新建一个27的行,点击OK,点击应用。那么下面我准备要来运行这个项目。
24:01
啊,准备运行这个项目,呃,我这个项目里面还涉及到这个过滤器啊,为了让大家不让大家这个干扰,我先把这个过滤器啊,我暂时先不要行吗?同学们。还记得这过滤器是干嘛的不?哎,对的,防止你没有经过登录对吧,直接经过后续的一系列的访问,这个过滤器的作用啊,咱们先把它屏蔽掉行吗?同学们。啊,要不然注册页面里看不到的啊。Set it。再回到这儿,再回到这,我们注册页面是放在user里面是吧。是是这个吧。叫点HT啊。那么对应的是他的话,我需要把这边好好的配一下喽,回到这儿把它删掉。Defect,好,27。删掉行。然后呢,再回到这儿,那咱们对应的是27。嗯,问号pag点动,然后and oper等于page,并且page等于。
25:01
等于啥used杠是不是?啊,对的吧。Use了杠嘛,我们之前登录页面是use了杠loging嘛,咱们现在就直接让他请求的页面行不行。没问题啊。好应用。OK。打开,那咱们把这里面把它去把它去改一下啊。TH么?好,把这个删掉。OK,回到这边。啥情况?嗯,它还识别不过来。真讨厌。T冒号。就是他。把后面的删掉。艾打好。
26:09
可以了吧。Time。点GG行。再来这边不管它了,然后再往下,嗯,这个这是个图片,图片,要不把它改了吧,T冒号。好,把这玩意删掉。回到这边来,OK。行,这边就这样吧。呃,然后下面咱们就开始到注册页面了啊。这是个phone,表达action。TH冒号action我们发给谁呢?我们要发给一个,发给一个组件。我们之前登录的时候是发给谁的。发给的应该是叫user点读是吧?行,咱们现在是不是还是应该发给user点读啊,拷贝了啊,从这边到这边C据C拷贝。回到这边来。
27:00
然后呢,从这到这肯定就被粘进来了。Form表单。Action,我要提交给他剪切。好,Method等于post。然后呢,这个value你就不要写log了,把它改成没错吧。一个隐藏于operator等于行。再往下走,用户名。密码确认密码,用户邮箱验证码,这都不管它行到这了,哎,到这个地方了,验证码。那请问一麦减SSC这边怎么改哦。At。肯定是某某某接着发给那个底,发给那个开姐的那个嘛。啊,那咱们得得把它配一下。行吧,我们把它去配置一下。我们找到外边点文件配一下啊,回到这边来,那这个我就不写了,我直接从刚刚那个项目里面拷过来行吗?同学们。直接从这考了啊,打开打开打开。
28:03
好,从这到这CTRLC拷贝一下,关掉CTRLV行吗?啊,这个里面内容随便你要不要吧,啊,你不要也行,无所谓啊。行,这个把它配上去了,这个叫capture.jpg。好,回到这边来,那你这个地方应该写的是。开起点JPG加个斜杠。可以吧,哎,就表示我要反问他。啊,这个一卖我就把它写上去。再来。我们先来试一试,看看这个图片能不能现在能不能显示出来啊,启动一下。
29:23
行,他已经启动好了,我们到页面上去看一下。好,我们要访问的是,哎,这怎么还这这啥意思。我就配的不对啊。然后呢?这个这个应该怎么写。配置连度,然后这边是问号是吧。不好意思。应用一下。就OK。
30:00
那行,咱们再来访问一下。啊,这个地方是叫PG电镀。然后问号是吧,行到注册页面看一下,注册页面能不能出来啊。哎,出来了吧。有点丑是吧?把它变小一点啊。回到webx文件。嗯,我们把尺寸也不加上去啊,尺寸这个属性我也记不住啊。记不住,那我们就来抄一下,回到它,打开它,打开它,打开它,打开它,打开它,找到constant constant这个吧。打开。抄一下啊。Can you see。回到这CTRLV。Ctv宽度宽度是宽度是一百一百六吧,一百二宽度一百二啊。然后再来。再回到这高度。CTRLC回到这边。
31:00
In it。KTV高度高度差不多40吧。这框随便吧,就这样吧啊。但是不管怎么,不管怎么说,同学们丑,丑归丑了点,但是我这边已经显示了。啊是吧,我已经把它显示出来了啊。所以说下一步我就要来做这个做验证了啊,做这个注册。我接着写了啊。随便他多手,不管他了啊,这个比较比较浪费时间,就不要在这上面浪费时间了,来一起来看一下啊,我们再找到book,我们找到。我们找到do,我们找到user。那我这边是不是要找一个叫添加方法呀。咱们得写一个。Void ADD user。ADD。
32:01
那我这边就需要个user。游走没错吧?就这样。好,他现在没报错,我们到注册页面看一下。写是一本小说。高度上差不多了,但是里面字体是不是要修饰一下?字体。字体。凤相关的,是不是有个凤的啥意思?Can you see。再搞一个。Need from the size。放了萨一次多大呢?放了size一次,比如说18。18差不多啊。行。然后。先稍等一下啊,先回到这儿,我先把它先注释,让他编译不报错,然后我们再启动看效果。
33:11
好,没问题。这个真的是。再来继续吧,啊不,不管他了啊,VO爱use了。然后到这里面来,我们得重写一下这个方法是吧,重写一下,快速写一下啊,我们找到数据库。找到book book DB啊,打开打开。找到user,就这个吧,打开注册,嗯,注册我们需要有u name password email以及。所以我们写一下update。Insert into t杠、user values第一个零字的列。呃,用户名,密码,邮箱角色就不要让别人写了,直接是零。
34:02
就普通用户嘛。好,下面一个是U,没错。悠着点get password password,没错,悠着点get email没问题吧?行,就这么三个。检查一下啊。123对的啊,没问题。这个不要。就是这样的。好,然后我们再找到service。这咋还报错了呢?不应该报错。啊,我封号没加加了呀。Ctrl a剪切掉,CTRLV粘进去。好了吧,行,再来。再找到service。好,User service,好,咱们得写个方法。Void register。User。行。那我们再去实现类里面再实现一下。
35:02
User service。好,然后用user do.i user把user扔进去是吧,我们先不考虑,先不考虑用户名是否已经被注册过,先不考虑邮箱是否已经被注册过,先不考虑这问题啊,先把它先注册上去。好,我们再回到CTRL。也就是我们的user control了,我们这边写了个log,那我们得再写一个。Public register。好。呃,第一个我们U肯定是要的。第二个password肯定是要的,第三个email肯定是要的是吧,然后我们还要从在线里面获取验证码,要做验证码。所以三线肯定也是要的。最后我们return的时候,我们可以到user-logging页面是不是啊。啊,让他到到登录页面去登录行。首先第一步我们要先获取验证码。那验证码不是这三个,咱们得再加一个参数。
36:00
好,先找到页面页面页面。稍等一下啊。稍等一下全部,其他的全部关掉,再找到。好,验证码也就是他,那请问一下同学们。我们验证码这边有个input,我们是不是要加个代码。啊,没错吧,得加一个啊,验证码叫verify code的。就这样。Can you see。回到这边来,再加一个。放前面放后面都可以啊,随便你放哪。子俊,他把他拉进来可以吧,就这样子。那行吧。呃,我们首先先从三线里面先获取在线点get attribute。那个参数叫啥来着。打开打开打开打开打开打开。找到他。是不是这个。Could you see。根据V。
37:06
开code的伏笔解等于它。If。Capture的OG等于等于。对的,那肯定是不对的。等于等于浪肯定是不对的。或者。或者。呃,等于得到不对啊,等于等于到是空不对,或者是什么呢?或者very cold.e。Capture code。好。加个感叹号不相等吧,或者两者不相等,我们就要给别人一个提示。怎么去给别人提示呢?我们需要用的response对象。或者这样吧,我先不给别人提示,我先让他直接跳转到我的。
38:01
注册页面重新注册杠。啊,一会儿我再把这个写的再好好一点啊else。Else,就是你们两者要相等吗?If。如果质量都相同。根据C。啊,如果相同相同的情况下,我再去调用user service。叫是吧,Register user了,那这user咱们6USE了。好,把放进去,把password放进去,把我们的email放进去可以吧?就这样子,然后咱们再写一个构造方法,点进去。Constructor。要的password email弱都要的吧,行,但家弱你可以没关系啊,你写上去也行,或者你这边加个零嘛。是不是默认让它等于零啊,那这个我再补一个吧,等于零。可以吧,同学们。就这样这样,我们不就注册好了吗?那注册好之后也让他到登录页面去登录。
39:03
好,Can you see。就是这样的。那行吧,咱们先来试一试,看看行不行。启动一下。我们看一下啊,能不能到到注册页面。其他的把它全部关闭,关闭其他。好,进来了,哎,现在DDE差不多能看得清楚。那行,用户名写一个呗。呃,写一个叫。
40:01
薄是吧。2023。用户密码,KK。艾特新浪点。com.cn。这个有点太长了,幺六点。com。好,DD fe是吧?是啊,验证码我写错了行吗?我先设个断点行吗?叫DD。是吧,行注册我点了啊点。我们来看一下啊。他进入断点了吧,行,咱们先来查一下,看他能不能查到运行。哎,Cap角OB是不是有啊,Ddf EF,那我们这衣服应该不成立吧。咱们这个这个叫ver,这个叫verify code的是不是也有啊,两者应该走的是这个衣服吧,行执行,哎进来了,然后执行register是不是。呀,执行主义咋办,报错了呢,看一下。看啥问题,Column?
41:00
开到了,别闹。咋还围攻了呢,点进去再点进去。点一下他。点一下他,再点他。Get为空啊。那就有为空啊。他给我打了一个波浪线。没问题啊。This的union吗?回到。回到这儿。我在这边是个断点。先跳过去,先跳过去再说啊,再来一次,再来一次啊,后退。OKOK。好,然后呢,我的数据库,数据库稍等一下啊,刷一下数据现在没有是吧,这个页面最好也要刷新一下啊,因为这个验证码会变的啊,刷一下行。
42:05
看不见是吧。重新刷一个GE是吧,行用户名。二零二四二零二三都可以啊,OKOK。好宝艾特幺六点。com。GG是吧,行点击注册对。我看一下到底是啥问题啊,往下走。好,直行过去,直行过去进来了,要执行进去。哎,要进这个方法,咱们进这个方法看一下啊。往下走。往下走。怎么全是浪呢?啊,全身上就没获取到值的同学们。是吧,我知道为什么了啊,真是的,太挫了,大家被我带沟里面去了,我们那个注册页面上面的那属性都没改。是不是啊,嗯,这个激动了大半天,看一下啊。其实很简单。我们刚才我光想着给大家去演示这个验证码了,你看上面这些表单的name是不是都没加呀。
43:07
你没加他怎么发的过去呢,是不是啊加一下啊。请输用户名,Name等于。UN南北。是吧,我顺便给他个默认值行吗?同学们。保2023。用户密码。Value就OK算了啊,确认密码value等于OK行。呃,再往下,呃,用户的邮箱,邮箱在这。AT16电控。验证码不管他啊。那个哇,这个。没有。这个是吧,Name等于password。对游戏了吧,有确认密码无所谓是吧,无所谓啊。好,就这样子再启动一次。
44:02
好,我们再看一次啊,这个下午确实很容易犯困啊,这个下午出错几率比较高。行进来了。这个是ED。点点注册。好,进来看一下。往下走。现在有知了吧,好,那现在估计是没问题了,执行执行过去,然后跳转可以了吧,同学们这样他就你看是不是就到登录页面了,就表示我们成功了。啊行,有些小细节我把它说一下啊,我们再来一次,我们来一次失败的情况啊,断电我就不要了。好,再点击注册,注册还过不去啊,回到这刷一下。行验证码搞不一样的行吗?同学们,ABCDEFFG显然不一样嘛,点注册。
45:04
还有断电吗?没有断电吗?那是不是是不是就还是这个页面,哎,他没变化吗。点注册它没变化是吧,他爽,他在这个闪闪烁了一下,表示他确实经过了一个跳转,但还是在我当前的页面。这样不太好,你最好告诉别人一下验证码不对。是吧,要告诉别人哎,弹个窗嘛,或者搞个div弹一下,然后呢,三秒钟,然后慢慢的慢慢的透明度变成零,慢慢隐藏掉是吧,但这个不是我们强项啊,这个不错啊。所以呢,所以呢,所以呢,在这个地方咱们得写一下啊,我需要把这个同学们,我要把response把它加进来,坚持一下啊,最后三分钟搞定。HTTP。Response。好,我需要把这个对象把他加进来。啊,把这对象加进来,然后再来。
46:02
如果你这边等于呢啊,或者你这边不相等啊,不相等的情况下,我就在这边写一下。点get,或者我先uf杠八。然后response.set好,Text-HTL。等。utf港。好,然后response.get writer获取一个流,这个叫print writer打印流是吧?获取一个打印流,好,获取了打印流之后,获取了打印流之后啊,在这边抛一场,抛一张就抛一下吧。然后print啊。然后呢,Out点。好,写一下啊,Script。Lang language等于javascript。Script。这玩意儿简不简贴也行啊,就这么写吧。好,叫验验证码不正确。
47:02
是吧,咱们咱们得加一下啊,叫验证码不正确,所以当我们验证码不对的时候,他是不是先执行这些,然后再跳转哦。啊,他然后才做了一个跳转,所以这句话咱们最好呢,呃,也可以不讲。啊,我们直接在这边写script验证码不对,然后window.location先点。哎,咱们得加一个值。啊,我们可以在这边去做个跳转。可以在这里去做个跳转。比如说我们要跳到跳到刚才的这个页面。就是他。Can you see。好,等他。就这样子啊,这样我们就把它写好了。好了。那我们得试试启动一下。这个让你不够return啊。不过,Return now。是吧,不够on啊,表示他不需要返应位置,那么到我们装央控制器里面,他一看on它是不是就不处理了呀。
48:03
是不是啊,他就不处理,他就不处理啊,再启动一次。2024。记记几个G点注册。验证码不正确,看到了吧,点击确定它又回来了。对了吧,那就这样。啊,你点注册验证码不正确啊,这没问题好了。这边报错看一下什么问题啊。控制症。咋还报空指针的呢?这控制的是这控制针问题是什么问题呢?是在这个地方。
49:00
我们这边可以做个小的判断。我们这边可以做小的判断,怎么判断同学们?你可以在这边写个if method的STL,如果等于等于now直接加个。是不是啊,或者你在这边if加个前提,Method的return不等于now,并且不等于空字不串,然后你才做这个判断。能听懂我在说什么吗?行吧,同学们啊,就是这样的。如果因为我们这个已经打成架包了,你如果觉得老师我一看到这个代码,我就很烦,我就心里就抵触是吧,这个那你就不改这边啊,不改这边那你就回到你这。回到这儿。你就不要写纳。你下这个行不行啊,行吧,同学们。我写个控制不串吧,那我问你,你控制不串和这个匹配是不是就匹配不上。那他走的是不是就是else,当然else这边有点小问题。你这个L也有点小问题,因为我们已经在这边做了跳转了,我就不需要你这个中央控制器再给我做跳转了,是不是啊。
50:02
来稍等一下啊,稍等一下,我把这句话注释一下啊。Could you see。我在上面,我尝试一下不跳转三。然后这个地方我感觉这样会有点小问题啊,我先试试行吗?我先试试看行不行啊,我感觉会有小问题,这玩意儿估计来不及打印就直接跳转了。啊,就直接跳转了,如果是这样的情况,咱们最好的方式,最好的方法还是把这边把它稍微改一改。很好。行,咱们试试坚持一下啊,一分钟最后一分钟啊,启动一下。因为啊同学们,你这边已经用了打印语句了。一般我们用的这种打印语句往客户端去输出流之后,你就不要再使用跳转了。这两者只能二选一。同学们。只能二选一,我给大家试一下啊。
51:02
因为我上面有了打印,下面有跳转,那你就会发现上面的打印呢,一般情况下它是不生效的。就直接跳掉了啊行。随便输一个可以吧,点击注册。还有啊,我觉得这应该不对啊,这估计是不是有缓存哦。按道理不应该是我们想要的这个效果啊,效果应该是不对的啊。那现在还有是吧。大家会觉得挺好,但是这个说实话,这个是应该是不符不符合常理啊,应该是这句话是不显示的。我看一下是不是缓存的问题啊。把缓存清掉。好,清完了之后我再来再刷一次啊。Register。嗯,Page置点读问号,Operate等于page,并且page等于register等于user user-register是吧,到这里行。
52:05
点注册。他现在还是对的啊,先对的就就就先对着吧,啊,咱们不改了。按道理,我觉得应该是不对的。因为你已经有了这个打印语句了嘛。啊,大家可以试一下,你有打印语句,然后你在后面你再写response.senddirect再重定向,你不会发现上面这个打印语句是无效的,行吗?同学们啊,发现它是无效的。行,所以,但这个不重要啊,我说过,我们最好的解决方法是在这里面做个判断就行。我们外面如果你不想让人家外面去跳转,你外面可以到,然后我们在装央控制器里面判断一下if,如果你等于上就算了嘛。如果你有值,我再做这边判断嘛,是不是同学们。啊,就是这样。好,我们暂时先说这么多啊。
我来说两句