00:00
好嗯,写完这一布局以后呢,回到我们这个代码层面,首先呢,先去做一个加载啊,这是一的S。加在我当前呢,刚才提供的这样的一些视图组件啊。这个呢,删掉。行啊,这呢是更多,这里边呢,都是这个杠的啊,没有返回之说了,行,那接下来呢,我们就开始完成相应的这些功能啊,这些功能里边呢,就是一个一个的啊,首先第一个呢,就最上边的关于用户注册的这个功能的实现,嗯。呃,当我们去点击啊,最上面这一项的时候。关掉啊。点击刚才最上面那一项的时候呢,就是一个叫用户注册,这是一个test view了啊,Test view的话呢,相当于给他去设置一个点击事件啊,点击事件就可以了,所以我们这里边呢,回过来啊,因为这里边我们有好多的这个台词view需帮你去操作的啊,所以不妨呢,你要都写到这儿就看着有点乱了,所以我们都封装成这个方法,首先第一个呢,叫用户注册。
01:03
啊,这样的一个操作,那用户注册的话呢,我们这呢,写一个方法啊,呃,就叫user。嗯,那这样一个方法,然后呢,我们进来啊这个方法,那当一运行到它的时候呢,这个方法就会执行,这个方法里边呢,说白了其实就是给我们这个恰用呢,去设置一个点击事件了啊。嗯,这个呢,我粘过来这个呢叫TV啊,然后more啊,这个注册啊,设置一个on click listener。然后我这里边一个on click listener。嗯,进来点击的时候呢,实际上就相当于启动一个新的activity。所以我们这里面呢,先去创建一个新的activity。啊,User。啊。那这呢,我们同样的去记成一贝斯,这个呢删掉。
02:02
嗯,然后呢,重启这个方法。啊,这个呢,暂时呢,先给大家去提供一下啊,二点非要的点activity啊,User register好先摆到这,然后回过来,哎,当用户点击的时候呢,把刚才我们创建这个it呢,给大家启动起来,所以这呢,我们就做一个启动啊,这你在这个fragment里面,所以得用engineer。那就这么着。啊被是activity啊,这次点二这次不行。More this year。嗯。Get,哎,强调完以后啊,再去goto一个新答案,User。It t点啊,哎,不串数据行,这样的话呢,我们就能够启动这个it。那启动好了以后的话呢,这个it下边要做的呢,又是布局的一个设置,布局呢目前就长这样。哎,相对来讲是不是。
03:00
不太难啊,那这呢我们就可以,是不是我就直接来调查我们写好的这个了。来找一下我们写好的这个里边lay user register这个。I。哎,粘过来啊,把这个呢清掉。啊,这个我这。来霸,现在我们也上了哈。嗯,可能shift的F啊,调下格式行,嗯,然后呢,从上往下捋顺一下,那这里边呢,需要调整的,我们就调整一下来,然后看一下这个布局,看是不是满足我们的这个需要。啊,就是这样个情况啊啊,这里边呢,每一个位置这是一个D的test了啊d test这里边我们回头去获取它这里边内容,当用户点击注册的时候呢,我们需要把这个数据呢发送给服务器啊呃,这里边就有一个小东西需要给大家说一下啊嗯,就是你看这我这写个background写的是一个now啊。
04:02
别的属性都比较熟了,这个位置你看我要是去掉啊。实际上看他长的是这样。啊,就是本身你这个ID的test,它后来这个API里边提供的就是一个有个线哈,上面让你写,呃,你要是觉得这样不好看的话呢,就像我们刚才这样的,嗯,什么也看不着这呢,你就可以这样来写一下,但不让咱写个no,就你把它默认这个线呢给它去掉了。那就没有了啊行,那这里边这个布局呢,我们就给它设置好了。布局设置好以后呢,再回过来找到我们这个TP层面呢,首先做一个加载。那加载完以后呢,把这个呢,我们给它删一下。呃,上面的都有了,哎做完以后呢,首先呢,关于这个in的data,这还是一个老思路啊,先给他去做一个设置啊,Site一个visibility,呃,用户注册这个是允许用户返回的,所以这是一个visible。
05:05
用户注册。有点in。In,为的,然后呢,给我们那个返回键呢,设置一个点击事件。哎,融remove一下我们car的这个T啊,保存就可以了啊。行,那下边的话呢,我们主要要做的呢,就是给我们的这个button啊,最终呢,去设置一个点击事件啊,点击它的时候呢,把这个数据呢,都给我们发送给服务器。那这里边儿呢,就涉及到我们得获取一下上面这样的一些内容啊,首先呢,我们在这里边去做啊,获取呃,用户注册的信息。啊,这个呢,都比较直接一些,直接我就在这写了,先获取这用户的这个一个一个来吧,Name get test.to点做一个。
06:10
啊,依次的话呢,把这几个都提供一下啊。嗯,提供的手机号。啊,提供的这个密码。啊,密码呢,得输入两遍密码一个啊。行这呢,我们就获取了这个信息,然后接下来呢,按正常来讲,我们就可以直接呢,呃,去设置一下我们这个叫注册button的点击事件。哎,就该去该该去这个设置它这个点击事件了,啊这呢我们就写一下它呢,点二叫set这一个on click listener。
07:00
嗯,在这里边我们去提供一个这个on listen,好当我们点击的时候呢,把这个内容给发出去。啊,把这个内容给发出去啊,那行了,我们下面呢,就开始来写这个事情,那写这个事情的话呢,我们想一想啊,一上来就发。是不是不太合适啊?因为本地我们通常呢,得需要做一些校验,比如说用户你发的时候呢,你这俩密码写的一样不呀,不一样,那就到底是以哪个为准呢?啊,所以之所以要写一个说确认密码,就是为了保证他俩的一样,所以在本地发送给服务器之前呢,先做一个校验。啊以及的话呢,呃,用户呢,在填写的时候呢,要求他必须得填写这里边儿的这些信息,每一项都得写啊,所以我们就需要有一些呃,在发送给服务器之前的一些校验工作啊,比如说刚才提到的说,呃所填写的信息都不能为空啊。
08:01
啊,填写的这个信息不能回。哎空,这是一种情况啊呃,第二种情况呢,就是哎密码两次密码必须一致。嗯,这个事情的话呢,是完全没有必要,是不是交给服务器以后,让服务器那块再调研。啊,你服务器校验,万一要是不一样呢,你再回来告诉用户说不一样了,你这块再去改,那中间那个联网的时间,这不就是浪费了吗。这也是这个比如正常大家那时候学就安卓有之前那不是原来都是通过浏览器去访问嘛,浏览器去访问服务器的时候呢。我们在这个前端的HTL代码里边,它不也会出现这个表单吗?表单里边呢,用户提交也有用户名,也有密码,也得写俩密码。啊,用户呢,假设一开始写的这两个密码不一致,如果呢,你没有GS就是先翻脸服务器,服务器呢,获取了两次密码,发现一校验不一样,然后呢,再返回给你,告诉你说说不一样了,然后我们再去改,那中间这个过程呢,实际上是比较浪费时间的,尤其在一开始由。
09:10
互联网的时候呢,这个网速都不太快啊,你点一下这个注册,等了五分钟回来告诉我说两次密码不一致。封了就是吧,完全没有必要呢,发给服务器以后再校验,所以呢才有了GS,在发送给服务器之前,当然如一点击注册的时候,先在本地校验一下,这个速度是极快的,校验完以后发现不一样,那这时候呢就让用户重新填写。啊,一样了,一样的时候呢,再发,那这个时间呢就节省下来,同时呢,呃,当然对电脑来讲的话,就主动节省流量了啊,你要手机的话呢,这个流量也能省一下。好,那我们这儿也是一样啊,在本地呢,去做一个这样的校验,那校验都没有问题了,你再进行一个联网的操作。嗯,然后呢,就是联网。发送用户注册信息。
10:00
啊,需要呢,我们考虑这样的几个事情,那我们就意思呢来考虑一下,这呢是我们已经获取到这个内容,我们呢就需要调一下test u点啊is empty,判断一下相应的每一个字符号,这呢是你为空。嗯,这里边儿其实想表达意思就是只要有一个围空就不行。那我们就可以这样写哈,这是一个空的。然后呢,来一个他是吧。然后呢,就把这四个都往这放一下。嗯。这个密码。确认密码好,然后呢,一四呢,这里边需要你把这几个都加上final。那行都加上了啊,在这里边呢,画画一下。如果用户写的信息有的为空,这呢也比较简单,直接呢,就透彻他一下就得了。
11:02
嗯,这个就提示用户说,嗯。嗯,这叫什么填写的信息。不能为空。这样,然后这就可以了啊,然后呢,来一个l if。判断一下这个两次填写的密码是否一致。啊,这是他填的这个密码对吧,那CTRLC一下,那现在呢,我们能够走到这,言外之意是不是已经不是空的了,既然不是空的了话,我这样去写一下ES,那控制针的问题是不是也不存在啊,所这就不用担心了啊啊,如果它这个加一个非,那就表示两次的密码不一致吧。那我们就再做一段tot。哎,说两次填写的密码不一致。
12:02
哎,有这样的情况,那不一致的话呢,我们顺便呢,就把用户写的这个信息呢,都给他指空,就省着让他自己删了,我们自己就让他直接呢,就往里写就行了,所以我们就给他先这么着。哎,就可以了啊,再往下。放一下。再往下的话呢,就是这个else,那就意味着信息都写了,密码一致,那接着我们要考虑的事情呢,就是给服务器呢做一个发送了。来做个发送,我们现在已经在activity里了,那我们已经在base斯activity里边,其实已经声明过那个啊think htp了是吧。是不是我们在这直接就可以去写一下这个了,点我们写一个post,好这呢我们就可以去发了,那首先呢,我们就提供一下你这个要联网的ul。哎,等于啊,APP net可是一个点,我们这做注册的,哎,访问的就是它了。啊,直接呢就写了啊,所以在这比L,那接下来呢,我们需要这个保存这个参数了。
13:05
哎,发送这个请求参数,哎,封装在我们这个request parents里边用一个。Request。啊,Parents,然后呢,将我们这个信息呢,给它设置到里边啊,Put啊意思呢,我们就往里边去写就行啊嗯,你写的话呢,你得小心点,是不是接着仍然需要参考一下接口文档啊这呢,咱们不是没有接口文档吗?所以直接我就看后台访问的是这个user register so,然后呢,这是他取的时候的这个方式。取子上叫name password跟那所以你在这块你往里填的时候呢,你得照着人家这个填。Name。嗯,接着呢,是一个叫password和父先后顺序,没有要求吧。其实这里边不都是建人队,相当于就卖一样map本身不就无趣的吗?
14:03
这顺序无所谓。啊,这是两种。然后这是我们这个PWD。这角缝。行,这呢是填充的一个请求参数。放在这儿。那接下来的话呢,还有一个就是我们的这个响应。I think。嗯,这个方式看到了啊,这里边我们去重写这两个方法。啊费点行,那先写这个失败吧,一般比较是这个都比较少啊,呃,失败的话呢,这个其实就是我们,呃,你去发送过去以后呢,走到这儿,其实呢,相当于是一个联网的一个请求失败啊。
15:03
看请求失败这哪哪一个。好,那这呢是一个成功的,那成功的话呢,这怎么算叫成功啊,就首先呢,是服务器给你返回的,这算一种成功,包括呢,就是呃,人家给你反馈404,这也算是走到这儿了哈,那我们看一下这里边成功该怎么去处理,那又得看接口文档给我们返回的这个count到底是什么。啊,到底是什么?那我们来看一眼。嗯,这里边呢,是他获取到我们刚才发送给他的这个参数啊,获取到以后的话呢,这里边写了一个JDBC,使用JDBC封装为的一个啊do啊do呢,这里面我们操作就是关于用户注册的啊叫user do,然后呢获取数据库连接,然后呢,这里边调了一下这个方法。哎,这个方案里边呢,就光把我们的手机号放在这里边了。他其实想做什么事啊。对,他先判断一下,你现在要注册的这个号儿手机号哈,在我们已有的这个数据库当中啊,是不是已经注册过了。
16:08
嗯,相当于他得是校验一下啊,像我们这里边已经有了这样的一些号码,你再填的话呢,就不能够填这些号码了。所以他先拿这个号码来这块查一下啊,其他比如说这个这个这个name啊,From user table where phone,等于就是你刚才你写的这个phone传进去。来这里边返回一个叫is exist。啊,在这里边我们看一下啊,查的时候呢,说呃,如果你查到这个结果了,我就返回一个角处,那言外之意,如果是个处表示呢,就是已经存在了。好,再回来。行,这我们还回到这个逻辑哈,那所以这个结果的话呢,下边进行判断了,说如果它是一个false,那就表示没有注册过,出呢表示注册过,那如果没有注册过呢,返回给用户一个什么呢。返回一个精神创,精神创呢,这个呢,就是一个。
17:02
这是一个出版。对吧,没有注册过,这是个处啊,注册过呢,哎,不对,没有注册过,这是个false。哎,注册过了,这是一个处,所以我们回过去呢,是不是解析这个阶串一下。对吧,哎,同时的话呢,如果你没有注册过这里又调了一个insert,那杨I迪呢,就帮帮我们把这个,哎,刚才他封装好的这三个数据哈,哎就给我们做了一个。保存啊,这个就我们把这个数据呢,给它保存了一下,User在这块装备了一下这个数据啊。行,那我回过来以后呢,刚才看到这个逻辑哈,这个content里边其实就是表示呢,是不是存在过了啊,我们就可以使用这个fast杰森它呢,首先pass。Object,它这是一个接的一个对象。来放在的这个,我们把这块说完了啊。啊,接在这个get里边呢,我们去get一个,其实是一个布尔型的,哎,真的行,这又得看是接口文档了。
18:04
啊,一直exist exist的。填到这,然后接收一下。这让我们写这个小写的吧,这样好,这块呢做个判断啊,Is exist,这是一个true表示呢,是不是已经注册过了。啊已经注册过,所以这块呢,我们就直接呢,就提示用户一下。第二做一个to啊,说此用户已注册。这样然后呢,来一个for好,然后来一个else else呢表示呢,用户没有注册过,在这呢做什么呀。诶注册成功,因为呢,服务器呢,已经当你没有注册过的话呢,已经帮我们隐算了啊,所以回不来。啊,注册成功。
19:02
注册成功,好这样的话呢就可以了。啊,其实我们这个程序呢,到这就写完了,就算是啊写完以后呢,再说一个小问题就是,呃,我看有的同学之前呢就开始写了,写的时候呢,呃,用模拟器测的话呢,没啥事,因为模拟器这个用户名,这不允许你写这个中文的。啊,所以你用英文呀,或者用这个123呢,哎,发到后台都没啥问题啊,啊用真机册的时候呢,写用户名写了一个以后呢。呃,发现发送到后台以后出问题了是吧?呃,这里边儿其实涉及到就是这个编码,呃相互之间的一个问题,这个呢,在传统的这个浏览器访问服务器呢,也是一个需要需要重点解决的一个问题啊这等一下我们来说这个事情,我现在呃测试一下这个。通常的这个一般的一个情况,然后我们来说一下这个乱码的一个小事儿啊,哎,把这个呢,我们跑起来。来,我们拿这个模拟器看一下。嗯,好,看下这个更多呃,用户注册,用户注册这块呢,我们点击啊进来了,哎,手机号这时候的话呢,我们就这样啊,先随便写一个啊,这块呢,写了下边没写点击注册啊,信息不能为空啊,就是这个问题,好下边我们这里写个密码,这呢我就又随便写一个点击。
20:17
哎,所填写的信息不能为空。就不对了是吧,嗯。如果不对了,让我看一眼啊。相当于我们这个信息的话呢,你不能写是吧。哎,这些信息的话呢,你写完以后呢,有为空了,你再点击的时候呢,是从这块走了,是这意思吧,哎,所以这里边呢,我们再去获取的话呢,你你开始为空的情况下就走到这块,所以我这应该把这个逻辑CTRLX,当你每次点击的时候呢,是不是新上来就先获取这个内容啊。应该写到这儿。这是第一个。第二点。啊,这是第三个啊,那写到这块的话呢,这个final的话,你就可以不用加了。嗯,就是这个问题啊,然后我们再重新跑一下。
21:07
啊注册那这时候呢,我们先随便这样写一写,空一个点击啊这为空了,然后呢,我这再随便写一个,然后再点击说不一致啊这呢就给它清除掉,然后下边呢,我们去注册一下啊注册一下话呢,这个手机号我们先写一个咱们注册过的130。1234 1234这呢,你得写个一样的啊,你你只有一样了都写了,这时候才会给才会给服务器发,哎,我这时候点击一下注册。这此用户已注册,怎么能这么快呢?我们本地的问题是吧,所以这个速度很快啊,这呢我们就没有写延迟了。啊,你回头呢,大家可以跟这个远程服务器呢去连一下啊,这个时间就稍微慢一点。好,这已经有了,那我们这呢提供一个啊,没有写过的啊,九九这个稍微看一下后台啊,没有九九行,然后这个密码都是刚才写的一样的,现在点击一下这个整两个英文字母吧。
22:05
QQ啊注册。好注册成功,然后呢,回到我们这个后台层面刷新一下。商线没有是吧,哎没有的话呢,哎,现在也没有连到这儿,没有连到这,我记得好像当时我们改过啊这个地址。啊APP net这呢是存到咱们这个远程服务器上。那你把这个CTRLC把它注释一下,改成咱自己的啊。嗯,那咱们自己的本地的啊,用的是把那给删了幺九二点。168.191.1啊,这个咱们本地的是8080。啊192。行,然后呢,把我们这个程序呢,再重新再把它跑一下。
23:04
相当于我们刚才这个地址呢,你是发给我们这个,呃,放到商务服务器上的这个数据库里了啊。啊,回到这个位置,我们再重新再做一个用户的注册啊,手机号啊130啊,这就随便写了四个一四个二。啊,用户名这上写个叫QQ啊,123密码三个一三个一回头呢,你关于密码的长度也可以做一个限制。那手机号的话呢,我们也可以给他去校验一下,是不是写的是一个手机号的一个规格啊,然后呢,点击一下注册啊,注册成功,然后回到我们本地的这个数据库这块刷新,哎,这就过来了。啊,这又做了一个存储啊。
我来说两句