00:01
我们继续来编写注册功能,那上一节课呢,我们来调通了验证码,那接下来我们要做的就是当表单里边填好这些信息以后们点击立即注册,那就应该给我们会员服务里边,至少给我们会员数据库里边保存好我们这个用户,那下次他按照他的用户名和密码就可以进行登录。好,这个注册呢,我们是author这个服务们还是在author服务,我们先来写一个controller,我们来到了我们的login controller,我们之前呢,这是一个获取短信验证码的方法,好,接下来我们再来写一个注册方法,那这个注册呢,我们来先写一个string,我们叫register,那这个注册我们要做的就是如果注册成功要回我们网站的首页,所以我们这个注册成功回到首页,注册成功回到我们这个首页,一般呢,我们也可以回到我们的登录页面,或者我们回到登录页,那这个登录页呢,我们就直接给他给一个跳转地址。
01:04
我们既注册成功,我们回登录页,我们让它重定向redirect重定向,重定向到哪个地址呢?来写上我们的全地址,我全地址是HTTP冒号双斜杠,那我们的这一块。I also,我们鼓励ma,我们现在呢是一个登录页,所以我们哎,写上登录页。那我们就叫log.htmmr,那既然是重递向到这一块请求,那我就直接这么来写,我们以前呢,在这一块我们映射了我们这个登录页的路径地址,那就是这只要是我们本服务要重定向,那么就可以不用加前边的这一串,好那么这一串呢就不用加,来写一个杠,Log杠呢代表以我们这个项目的域名路径为准,然后呢,接下来访问它的HTML,回到登录页,好,我们要准备一个注册,我们先来映射一个请求注册要提交表单数据,那么就来写一个post请求,Posts请求呢,我们就叫register注册,我们来分析页面呢,将会提交这些数据,所以我们应该有一个VO来准备封装层,我在这来写一个VO,这个VO呢,那就是我们放在这里边,我们就叫user VO,那在用户注册的时候用了这个VO,那这个VO里边有这么多的数据,我先来看一下第一个。
02:26
是private string,我们string类型的,我们这个用户名,我们先来写上用户名user name,还有我们第二个private string,我们肯定呢,还有密码,我们就叫passwor,接下来我们页面呢,还会提交我们的确认密码,确认密码这个让前端一校验就行了,我们也不需要后台来收了,和这个常用的手机号,那么接下来再来收一个手机号,此这呢我们去交份好,然后最后我们再来收一个我的验证码code。
03:00
嗯,给它添上按data,让它自动生成get set。另外呢,我们这一块的数据需要校验,所以我们直接来使用GSR303校验注解。第一个username,我们就直接来写一个叫not empty,它不能是空,而且如果是空的话呢,我们来写一个message,就是username,必须提交,用户名必须提交,这是我们第一个校验,第二个我们的这个密码也一样,包括我们这个用户名呢,可能有多种校验规则,比如我们至少在六位以上,我们就可以继续来规定at一个Les。比如我们来约定长度面,我们最小呢是六位,然后呢最大max我们18,那这就我们错误以后来给提示消息,就是用户名必须是咱们这个六到18位字符。好,然后呢,接下来就是我们这个密码,密码呢我们也来限定一下,首先它不能为空,这个呢是密码必须不能为空,密码必须填写,然后呢,包括我们来也给它加上我们的程度约束,那密码呢至少在六位以上。
04:19
那长度呢,也在18位以内,可以来约束一下密码,密码当然如果有更复杂的约束,我们还可以来写正则,比如在这有一个叫at pattern,我们可以在这来指定则,比如手机号,我们可以说手机号的正则表达式是什么?我们来在这来写一个正则表达式,然我们这一块的正则呢,这一块斜杠不用加,好这是我们这个正则,我们是零到九,好,我们写来零到九,然后呢是11位,这是我们的手机号。而且呢,必须以数字一开始,好,我来写一个,必须以数字一开始。
05:01
剩下的零到九,那就剩了十位,当严谨一点呢,我们还可以这么来写,比如我呢写这么一串,这一串呢就是以一开始,然后呢,我们一般手机号都是幺三几,幺七几,还有幺五几我们这个号段,那接下来中间的号段呢,是三到九,这是中间这一位,然后呢,剩下的那就是零到九了,因为前两位呢,已经将两位占了,那零到九这个呢,总共就九位,合起来11位,这是我们的正则,如果出现了错误,那我们就可以在这来指定message我们这个手机号。格式不正确,然后呢,接下来这是我们的验证码,验证码呢必须不能为空,我们填写上,好,这个验证码必须填写。我们都来做了一些简单的数据校验,当然手机号这一块呢,来也加上,不能为空。
06:00
那么是这个手机号必须填写,我们说想要开启我们这个数据校验,好我们来到我们的CTRL,我们用户注册呢,页面就会给我们提交这个register VO这个类型的数据,由于是post请求,好我们在这来写上一个叫an,我要数据校验,我就来写一个valid,我们来进行数据校验。而且校验以后的结果我们都可以封装在帮ing result中,只要它后边跟一个帮ing result,所有校验的结果呢都过来了,而且我们还应该判断,如果说我们这个result里边汉字error。有我们这个校验错误,那么就应该转发回我们的注册页,那注册页呢,我们直接跳转,我们现在呢是转发,所以我们就要写forward转发,转发到呢,我们这个当前项目下,我们注册页在之前也做了一个配置是re htmr,所以我们转发到这。
07:04
好,我们是这种转发,诶那大家考虑一下,我这种写法跟这种有什么区别,比如呢,我可以重新来到我的HTM2的这个注册页,我直接写reg,那这个reg呢,相当于返回的是我们这个视图的逻辑视图地址,那它最后会前后拼创得到我们这个注册页,而这个转发呢,我们这个视图解析器不拼创,因为已经指定了。完整的地址,所以相当于还会来到我们这个映射,那通过这个页面再去找到,这相当于多绕了一圈,那两种呢都行,我们可以使用下边这种,那都习惯一下写法,好,如果校验出错,校验出错出错,那转发到咱们这个注册页,注册页另外呢,我们这一块呢,还需要做这些校验,比如我们要进行用户注册,首先用户名以及我们的手机号必须是没有占用的,所以呢,我们还要进行统计,当这个统计信息呢,我们可以交给远程服务,我们注册呢,我们就负责将我们注册请求发给远程服务,远程服务呢帮我们来校验是用户名还是手机号出现了问题,好,那我们现在呢,就来写这个方法,然后我们接下来这一块的逻辑写完,我们先来改造页面,保证页面呢能为我们提交来数据,好来找到我们这个。
08:30
页面立即注册按钮,右键来检查元素,来找到这个立即注册按钮,CTRLF,好,这是立即注册,我们看到呢,这是一个是一个提交按钮,它对应一个form表单,好,那这个form表单呢,这有一个action地址,那我们就来写th action。我们要提交到哪呢?那就提交给当前项目,那我们专门映射了一个叫这个register的请求,我们来到这个页面来写上这个register请求来到这儿,而且呢,我们是一个post方式,Method就来写一个post。
09:08
那接下来我们要提交的这个数据,Class four,这个four我们就不要了,然后呢,每一个input框我们一定要给一个name。这个name呢,要跟我们这个扎B封装的字段要一一对应,好,那我们第一个name是我们的用户名,用户名我们来对应一下我们的VO里边的数据,那在我们这个VO里边,它叫username,好那我们提交的时候呢,就叫username,同样的它的这个密码在我们这个VO里边。C,我们代码来整理一下这一块。我们把整个form表单我们来选择,来把它代码整理一下,好,然后呢,我们来看一下现在这个设置密码。密码的input框name,那就叫我们在这VO里边对应的password。
10:01
还有我们的这个label for,好,我们这一块来写上did did呢就等于我们指定的份,这是我们的确认密码,那确认密码不是这个,手机号呢,是这个,那我们就先来把手机号写上name就是份,然后我们这个确认密码我们也不提交了,那我们就不写name值了,然后接下来还有这个user。Na这一块是验证码的位置,把这个username还是去掉。来指定一个name,那么验证码呢叫code,所以我们这个VO里边叫code好封装正确,那接下来我们来点立即注册,那就应该给我们CTRL发送请求过来,过来以后呢,先来进行数据校验,然后再来出现有错误没错误,包括呢,有错误以后我们可以将错误消息返给页面,让页面呢自己来取。所以呢,我们来最终就算是转发去页面,我们来也写一个model,好,我们给model里边放一些数据,那这个model就是我们spring mvc提供的功能,我们将一些错误消息来准备放里边,比如我们attribute里边,只要我们出现了一个error message。
11:15
比如我们就叫as,我们的一些错误消息,那有错误消息,那我们就把消息都放在这,包括呢,到底哪一个字段出现了什么错误,我们给它整成一个map的形式,那比较合理一点,就叫string string。好,那我们这个呢,就叫arrows,我们出现的这些错误封装在这有一个AR,我们就叫哈希map,好,然后呢,接下来我们把result里边所有的错误我们拿来一封装就行了,Result我有一个叫get field errors,获取我们所有属性的错误信息,然后呢,我们来给它整一个stream,然后我们来写一个map。我们将每一个错误,我们每一个错误,然后呢,我们fill error,我们过来进行封装处理,Fill error里边首先第一个get field,我们能知道哪个字段出现了错误,然后呢,它的错误消息是什么,我们也可以获取到get default message default message就是我们在message里边写的这个错误提示,那就这好那我们按照这个结构,我们给map里放好,K呢,就是这个属性,第2PUT k就是这个属性出现了我们这个错误,好,我们放好以后呢,那么最终要返回一个数据。
12:38
而且呢,我们这一块最快的生成map的方式,那我们也不用这么来写,好,我把这一块呢,我来给大家注掉,我们可以这么来写stream,我们直接呢,准备把它收集变成一个map,那叫to map。那就来写collectors们来找一个to map,好,Collectors点一个,我们现在来把它转成一个map,然后呢,这个里边to map里边,那就要传我们什么东西是作为K,什么东西是来作为value,那作为K呢,其实就是我们这个fair的arrow里边的这个get fair它呢作为K,那么就可以拿过来来写我们里边的这个field errorr,我们把这个参数呢,可以来传进来,然后呢,我们来映射。
13:26
把这个field的errorr里边的get field ID我们来作为K,然后呢,把什么作为值,还是我们的这个field errorr,我们将这个参数传进来,我们把它里边的另外一个提取出来,我们作为值,Field errorr,它的default message作为值,这就是我们可以把它直接变成一个map,那就是我们最终想要的这个map,把这个map呢就来删掉,当然这一块更快的写法,我们这个feel的arrow我们可以来看一下。
14:00
给的arrow呢,它是这个类型的,那么直接可以调用它的类方法,好那第一个我们就来改变一下。把第一个呢,我们来简写,简写为这个fair error类,点get fair好双冒号,那第二个我们就简写成get default message,把这个我们也拿过来好,这是我们这个第二个,第二个呢是field error的get default message,我们来找一下。那先把这个get file的ID拿过来,但是我们现在叫get default message。好,我们就按照指定的KV,我们将它转成了一个map,这就是我们所有的错误,把这个错误内容呢放在这儿,方便我们这个页面进行提取。这是我们这个前置校验,如果前置校验没有什么问题,那到下面那就是真正的注册,真正注册,那这个真正注册呢,我们就要调用远程服务,调用远程服务进行注册。
15:02
那这个注册呢,我们一会调,我们先来看这一块有没有效果,我来启动一下我们的author server。我们跟页面联动起来,好,全部启动成功呢,我们来刷新一下页面,来同意并继续,诶我发现我在这点已经没反应了,我们来先F12看一下我们的控制台这儿没有报错,那GS没有什么错误,来看我们的后台是不是页面出问题,诶我们这个后台有报错,这个报错呢,是我们这个模板的渲染可能有问题,主要呢,有一个re,我们的这就是我们这个注册的路径地址,那这一块有问题,我们来CTRLF搜一下,好,这个注册路径地址是这个th action,对了,那么这个呢,是一个常量,不是一个表达式,所以我们不用写THCTRLF9,然后呢,其他的所有的用户名密码,每一个都有name,它都能正确提交啊,没问题,来先来刷新一下,保证这一块正确访问,好,我们现在来写一个错的,那如果我写一个错的呢,那肯定就会来到我们的这块方法,比如我们给这儿来打一个断点。
16:08
我给这儿呢,来打一个断点,那就肯定会有错误,那有错误以后呢,我们现在想要做的就是我们给我们的这个注册页面,我们来回想我们的这个错误,比如我们在这儿输了一个错误的东西,首先这个前端的校验代码啊,这是前端自己做的校验,在这输了一个错误,那我们后台的校验错误内容我们也想显示在这,主要呢,它是在这有一个class tips,一个这些来CTRLF搜一下,发现呢,每一个下面都有一个class tips,那么接下来就要来取出这些错误信息。那这些错误信息怎么取好,我们现在呢,以debug模式放进来,我们来看一下,你现在先填一个全部都是错误的密码,我写一个111手机号,诶这都是错误的,来点一个立即注册,那就应该提交上去,诶我发现这一块呢没动静,你们这断点打了吗?也打了,那没动静的原因肯定就是我们这个立即注册,这个注册按钮绑了,单击事件肯定阻止了我们表单的默认提交行为,那我们就来到注册页来找一下。
17:13
好,我们这个立即注册按钮确实在这,好,我们确实呢,给按钮绑了事件行了,事件这一块做什么我们不关心,直接给它注掉,我们点立即注册,就是要提交上去,CTRLF9页面刷新。好,那么这个编译好了以后,我来刷新,把这个页面重新刷新,我现在来输一些错误信息。啊,这些都是错的,不符合要求的,好,我来点一个立即注册,好现在以debug模式进来,进来呢,我们上来就进入到我们这一块错误,我们现在已经收集到错误,那收集做到错误呢,发现这是一个哈希map里边呢,按照我们之前的约定属性名作为K值呢,就是我们的这个错误代码,那接下来我们就可以来取出这些值。那我们现在想要取出这些错误消息,好,我直接来放行。
18:01
那取出错误消息呢,我们就在这个注册页面,主要他们都是这些tips来找一下,之前呢是一个什么?Class等于tips。好,所有的错误呢都放在这儿,所以我可以使用th test来取值,怎么取呢?我th test行,这个要用,我们先来引入SIM类的名称空间来往上走,名称空间在这呢,大家可以复制别的页面,我写了一个快捷键THY啊,直接呢就引过来了,然后接下来我们在这来SIM live的名称空间,我们来取第一个值。由于我们这个里边的东西是一个map,所以我直接用Dollar符大括号,我来取出我们给这个as,这个map里边放的第一个,第一个呢,如果用户名错了,Map里边就会用按照这个属性给它放东西,但这一块呢,大家一定要注意,因为我们这个arows可能为空。如果我们第一次进页面,或者我们根本没有发生过错误,那么这个aris就是空的,那么第一次进页面还没输值呢,没啥错误,这个是空的,如果我们从空里边取U,则内姆那肯定就控制帧了,所以我们在这要取值之前一定判断,如果艾若S不等于空,哎,我们写一个三日运算,它不等于空吗?如果不等于空,我们就来取出aros里边的username作为username这一块的错误消息提示,否则就是空串,那其他的所有人都一样,每一个人取出自己的错误消息作为提示,否则呢,就是空串。好,然后呢,我把这一块都复制到下边,确认密码就不写了,还有这一块的手机号,手机号我给下边放上。
19:45
然后我们的手机号。包括我们的验证码,这些呢,都是需要我们的后端校验好,验证码呢,我们也给它加一个div class keeps。好,我把这一块呢,我来复制过来,CTRLF9。
20:02
好,我们页面呢,重新来编一下,编一下,我们现在来测试,我来重新刷新,来先来访问我们的注册页,刚才有一些错误,好,来点个同意并继续,好,现在呢,我们现在判断为空,所以上来进来呢,没什么问题,接下来我们就来写上我们的一些错误,如果是我们的这个用户名错了,但是密码呢,我们也错了,我们先都加上一些错误来看能不能正确显示验证码,随便也写一个。验证码呢,要不能为空,那么就来写一个空的,我来点立即注册好,现在呢,Debug进来,Debug来到我们这儿,我们现在来看我们的所有错误消息,所有消息呢是一个map里边按照他们的key都放好了值,直接放行来到页面看能不能正确显示,那发现呢,上来直接报了一个错,这个错误呢说request method post not support,说我们这个post请求不支持。包括我们这个后台来看一下后台我们这一块呢,打印肯定呢,会有我们的POS请求不支持,那这一块没打印咱们页面呢,现在报了一个这个错,这个错呢,非常值得大家注意,这叫post不支持,那为什么post会不支持出现这个问题。
21:18
原因是这样子的,我们来分析它的整个顺序,首先我们用户注册会发给我们的register这个请求,但这个请求呢,我们约定它必须是post模式,好,那我们先post请求发进来了,那来到这儿代码呢,运行检查出错了,然后我们转发到reg这个页面,对我们接下来呢,是一个转发,我们转发到这个页面,那接下来就出问题了,我们说这个页面我们以前是做的路径映射在这儿,我们是reg htm Mr映射到我们的注册页,相当于我们在这是转发到这儿,而我们说我们做的这个路径映射,路径映射默认都是post,诶都是get方式才能访问的,Get方式访问的,访问的,所以呢,现在就是出现了问题,我们注册呢是一个post,什么叫转发,就是原请求原封不动。
22:18
转给下一个人,那下一个人呢,要求的请求方式是get方式,那就类似于你用post方式给get方式发了一个请求,那就post不支持了,所以我们这种呢,我们就可以在这我们不用这种转发了,来我们想要去reg这个页面,好我们不用转发,我们直接呢让他去渲染我们这个注册页,因为我们这个注册页地址在这儿,我们使用SIM直接渲染,那这一块呢,就不会出现这个问题,好我们来重新一对八个模式启动。我们还是在这来做一个测试,那现在来访问我们的注册页,刚才那个问题呢,大家一定注意一下,好来回撤,现在服务呢没启动,来稍等一下,好,我们再来刷新一下,好来到我们注册页,我点同意并继续,来先输一些错的用户名,密码也是不合法的,你确认密码手机号不合法,验证码我们没填也不合法,我点立即注册,那呢肯定都是错误的,我们的错误消息,我们现在来看收集到了这四个字段的错误消息,没问题,然后呢,我来直接放行,那来到我们的这个页面,诶这个页面呢,默认一进来都要展示这一块信息,好我们先同意并继续,但我们发现这这儿呢,这一块的提示虽然不是红颜色的,但是他们这儿用户名必须是六到18位,这六到18位手机格式不正确,验证码必须填写,这都是我们后台返回的,好,那这一块呢,那就没问题了,当然现在呢,还有一个问题,比如如果我们的用户名我填的是错的。
23:50
那密码呢,我填的是对的一二,比如我来写上我们的八位123456789,然后呢,手机号是错的,验证码呢,我又填了,那有错有对,我现在来点立即注册,好我们现在呢看这个错误消息,错误消息呢我们收集了两个,一个是手机号和用户名有问题来直接放行走,放现呢我们来看页面,好,我点同意并继续,然后发现呢,此时点同意并继续已经进不去了,原因我们来看控制台,控制台呢又报错,报错呢说我们的SPL表达式出现问题,主要就是取password,诶那就对了,他说呢,Cannot be foundd不能在我们map类型里边找到我们password这个K,找到这个属性,相当于我们的这个错误消息啊,默认现在只收集到了两个,但是你还想在这要获取我们的password的错误消息来往上看,我们map里边根本没有它,你没办法获取。所以接下来。
24:50
在这一块呢,也要做我们的飞空这些判断,这一块呢,我们全部来参照我们simlif的文档,在simli里边,文档里边呢,专门有对map普集合的操作,那么想要取值之前,一定要判断我们这个map里边是不是包含了这个值,包含了那我们就取,没包含我们就不取,所以呢,把这个拿过来。
25:12
我们在所有的错误消息取值的时候,那我们三元运算的这一块,那就应该是这样的样子,我先来写一个小括号,我们让它进行一个完整计算,好首先呢,Maps里边有没有包含我们指定的k maps我们判断哪个map,那就是这个errorrows这个map只要irow不为空,我们arow这个map就存在,有没有包含哪个K,我们呢,现在取用户名,那就是有一个K,现在呢就叫用户名,有没有包含它。如果包含了它。我们在这来写一个三元运算,这个小括号里边好,它有吗?也要说,如果包含了,那我们就取出来,好,Contents k我们是判断包含,包含了我们就来取出来,就叫user name,那不包含了我们就是空白串,好那我把这一块的写法我们应用到所有人,包括我们来给它把样式红颜色的样式也加上style,我们就叫color red。
26:15
好,我们把这一块呢,全部拿过去,把这一块往下放好来,复制过来。每一个tips,那都应该这样做。Password在这也一样,我们来把这一块改成password,那这一块呢也一样,Password。好,其他的也一样。那在下边还有一个手机号的。手机号还得修改一下。手机号呢,我们叫份好,那我们这一块呢,也叫份。好,我们手机号呢,改完以后,我们接下来是验证码。所以这些页面细节还是非常多的,这个验证码呢,我们现在叫code,有没有包含它,好,有了我就取出它来,CTRLF9,把页面呢来重新编译一下。
27:08
控制台清空,我来刷新一下。好,我来刷新,诶我们发现呢,刷新这是一次表单重复提交。因为我们之前呢,是请求转发模式,我们只要刷新呢,相当于又重复提交了一下。好,我们进来先来看一下,我们现在是debug模式进来,我们收集到的所有错误消息,现在只有手机号和用户名两个,好,我来放行,看现在能不能正确显示来到我们这个页面,我点同意并继续,好,正确了,那这个用户名、手机号确实显示在这儿,所以我们在取值的时候一定要做合理的判断。这是我们第一个,第二个我们说还之前出现一个问题,就是我在这来刷新的时候,这是一次表单重复提交,那防止表单重复提交最好的方式,那就是我们不要转发来到我们的注册页,因为我们这儿一旦注册成功了以后,诶我们发现呢,是一个转发方式,那转发的时候,那现在这一块路径不变,我们再来刷新,那就是一次重复提交,所以呢,我们使用重定向的方式,好,我让它重定向,当然重定向不可能直接重定向到我们这个模板引擎的这个页面,我重定向只能重定向我们指定的路径地址,我们在之前呢,注册页已经映射了入境地址,所以我们就放在这儿,那我就重定向到这一块。
28:31
走,但重定向呢,又会出现一个问题,因为我们转发model放到这里边的数据默认是在请求域中的,我们可以获取到,但重定向呢,它获取不到,但重定向想要共享数据,我们也可以spring mvc也解决了,Spring mvc里边有一个这个东西我们就不用model了,它有一个叫redirect attributes,好,就是它,我们就叫redirect attributes,这个的作用就是用来。
29:02
重定向视图,哎,我们把视图重定向到了一个地方,我们还想要带上我们给他的一些数据,那么就可以使用它好来提示一下它,就是呢重定向。它是来模拟模拟我们这个重定向,这个来模拟重定向携带数据的,所以我们这个重定向携带数据呢,我们把它拿过来们想要用,我们就不给这个model里边放了,那这个model呢,我来注掉重定向携带数据,我可以这样来写点一个,它有一个方法叫and flash。A tributes就是添加一个一闪而过的这个属性,那就是呢,我们这个属性啊,只需要取一次就行了,所以呢,我在这儿as里边,好,我们还是把原来的东西我们都放到这,这种呢,允许我们重定向进行访问,好我现在还是以雷巴ug模式,以前呢是转发地址不变,我们再来刷新就出问题了,但如果我们改为重定向,不做任何加工,这些请求域中放的数据肯定取不出来的,那我们现在呢,加了重定向以后,我们来看效果。
30:15
我们想要加了,重提下,还要能取出请求域中我们现在添加上来的这些数据,你就可以使用redirect attributes,好,现在我们来看一下效果,我来刷新页面,我们现在不刷新,我就重新访问reg.HTMR,好,我来重新访问注册页,然后呢,我们现在是雷锋阳,我们来写几个错误的,好错误的。验证码呢,我们也验证码,我们填上是一个正确的,我来点立即注册。好,立即一注册呢,我们发现我们现在重定向过来了,然后呢,我来点一个同意协议,但是呢,我们现在发现这个重定向它出现了问题,问题就在这。它重定向的这个我们应该是重定向到我们域名指定的地方,它的重定向是完全按照我们这个服务器当前端口来的,所以呢,我们在这想要重定向到完整路径,那么就必须写上我们的域名HTTP,然后呢我们叫O点一个。
31:16
鼓励mail.come。然后我们重定向到这,但我们这种重定向的话,我们来看我们的这个redirite attributes还能带数据吗?这肯定不行了,那如果是这种重定向,我们都可以重定向去百度,但百度能把我们数据取出来吗?我们来测试一下,来看一下我们最终的效果好,我们现在呢,还是访问我们正常的这个页面,这是注册页。好,那现在给他提交数据。我们随便写几个错的,咦?一我们手机号我来点立即注册好,现在呢,重定向回来了,我同意并继续,诶我们发现呢,这一块的信息全部都取出来了,所以我们这个重定向,只要是重定向到我们自己这一块肯定没问题的,但是它的原理是什么呢?来F12给大家看一下控制台原理在这儿。
32:09
在application里边,我们这呢有一个cookie,首先cookie里边呢有一个解session ID,大家都知道这是什么吗?哎,这就是我们的session,我们写web应用呢,我们以前想要用htv session给session里边存东西。我们是这么写的,Http session。好,我们把这个session拿来,我们可以将这些数据,无论是重定向,只要是我们当前服务器,我们跨页面共享呢,我们可以给session里边放东西,所以呢,我们这个重定向携带数据,它就是来模拟session,但是如果在我们分布式下,我们要使用session会出现一些问题,但是我们现在已经用了session了,那么下一节课或者我们以后去来解决我们这个分布事项session出现的问题,好,我们现在重定向携带数据没问题,只要是我们这个项目肯定是没问题的重定向携带数据,然后呢,它是利用session原理。
33:10
也就是说呢,它是将我们这个数据放在session中,然后呢,重定向到新页面以后呢,再从session中取出来,那只要一取它呢,就会把这个数据删掉,所以我下一次再来刷新这个页面,大家来看啊,刷新reg,我再来进来,我发现这就没有错误提示了,将它模拟一次性提示,所以放数据放在session中,只要跳到下一个页面,跳到下一个页面,下一个页面取出这个数据以后。Session里边的这个数据就会删掉,三是里边的数据就会删掉。所以呢,我们会用到session,但是呢,如果用到session,我就会出现分布式session问题,我们一定要解决这个分布式情况下session的问题,当然这个问题呢,我们后来我们专门来讲分布式下的session问题好。
34:13
那这是我们的注册的整个跳转逻辑,那我们这一块一切正常,该显示错误的显示错误,那该正确的,只要它正确了,我们就应该真正调用我们的远程注册服务来进行注册就行了,那下一节课来写这个注册结果。
我来说两句