00:01
啊呃,那接下来呢,我们呃,围绕着一个注册功能啊,来去给大家去讲解一个叫做jas这样的一个技术啊,所以说呢,我们这个话题里面呢,我们主要是去做一个注册的功能啊,然后呢,在这个注册功能里面呢,我们需要去做一些呃,这个用户体验相关的东西,那我们就会用到了一个adjusts这样的一个技术,来去做一个异步的一个表单校验啊,暂时的话呢,我们先不用去管这个adjust是一个什么东西,我们先把这个注册先来把它做一下,做完以后呢,我们再去研究怎么去用我们这个adjust,然后做一些优化的东西啊,然后那我们先回到我们的开发工具中,然后呢,呃,因为你要进行一个注册的操作,所以说呢,我们在这个web content下面呢,我们再去写一个页面,呃,那我们再来写这个页面的时候,我们就直接采用这个JSP了,就不再使用我们一开始掌握的这个HTML能明白吧,因为JSP的话呢,其实大家也能感受出来用。
01:01
起来跟那个HTML呢,呃也差不太多,但是呢,JSB是支持我们去啊做一些什么,诶Java的一些什么判断,去写一些Java代码,然后呢,也可以去用一些我们的ER100达式,以及后续的话呢,我们还可以去使用一些这个呃,JSTL相关的一些这个标签啊所以说呢,我们呃学了这个JSP以后呢,我们就优先去采用我们的这个JSP,明白了吧,那么我们再来创建页面的时候,你就直接去扭一个啊JSP。OK,那么这个页面的话呢,我们就叫成注册,那我们就叫SP。啊,然后呢,这是一个注册页面啊,我们简单来把它开发一下,呃,先来写一个HR啊,比如说这个欢迎注册啊,然后呢,呃,大家想一想啊,这个注册功能其实是一个添加吧,想想是不是啊对吧?诶注册功能呢,无非就是用户呢去输入一些数据,然后呢,把这个数据呢给你提交到你这个后台,然后你在后台呢,把这个数据给它保存到数据库里面,那么这就是一个注册的功能,所以说呢,我们这个地方呢,还要用到一个form表单来去收集一下我们这个用户的一些信息啊好,Action的话呢,一会我就来发送一个,就是一个这样的一个请求,那么method我们依旧是使用post,好呃,这个里面的话呢,我们对照着我们的数据库的这个表来去写啊,就是你需要有哪些信息,那我们就在注册的时候呢,给他提供上哪些信息,呃,因为我们这个表比较简单啊,所以说呢,我们也不用去写那么多,就是最基本的一。
02:44
一个是用户名,一个是密码,能理解吧?诶一个是用户名,一个是密码啊好,那我们在这个地方就写一下用户名称啊OK,用户名称,那么通过一个input type等于一个text,好那么这个name的话呢,我们也叫做username就行了啊再写个BR,再来写个用户密码好input type等于哎应该叫什么呀,Password,然后name呢,就等于什么呀?哎,Password就可以了啊啊呃,那么一般情况下,你在注册的时候呢,它会让你去确认一下这个密码是不是啊啊为什么要确认一下密码呀?啊怕怎么着啊,怕说的不一样是吧?啊是不是这个意思啊啊给大家分析一下。
03:44
啊,为什么要确认密码呢?其实现在我们好多网站上,它已经不需要你这么做了,你理解吧,为什么不需要你这么做了呀,因为现在这种密码吧,它这个输入框后面呢,都有一个那个小眼睛是不是啊,你一点诶就从什么点点点点点点变成什么你的铭文了,你再一点是不是变成那个就是那个呃密码的那个样子了,对吧?这样的话就可让你可以确保一下我输入的这个信息确实跟我心里面想的那个是一样的,但是以前我们做这个网站的时候,就是让大家输,最少要输两次,为什么呢?因为这个密码你在输的时候你是看不到的,可能你心里面想的是123456,但是不小心呢,你输成了123465了,对吧?OK,这样的话呢,你心里面想的是123456,但是呢,你注册成功以后呢,是123465,你就会发现怎么也登不上去。
04:36
是吧,所以说呢,我让你去确认一下,那么确认的这个目的是什么呢?就是来保证你输了这个密码,跟你心里面想的是一样的,你两次不可能都输错吧,是不是,而且就算你两次都错,你也不能错的一样吧。能明白这个意思吗?诶基本上我们通过一个这个确认密码就可以什么诶断定一下这个用户输入的那个东西跟他心里面想的那个一样不一样啊,所以说呢,这个功能一会呢,我们也需要给他简单的去做一做啊,然后呢,我们再来写一个type啊,等于我们的submit就是一个提交的过程啊,然后呢,Value呢,就比如说等于注册好这就可以了,看明白这个页面了吧,然后有了这个页面以后呢,呃,我们就可以访问到他,然后呢,将来我们会输入我们的用户名,输入我们的密码,那么暂时这个确认密码的这个工作呢,我们先不做啊,我们先把正常的这个的注册功能呢,先把它完善了,完善以后呢,我们再去做这个表单的一个校验啊,因此呢,现在我们只需要关心你的用户名跟你的密码就行了,OK,那么我们先来把这个项目呢,重新给他部署一下,我们再访问一次。
05:52
好,启动一下。
06:01
OK,呃,启动以后呢,等一下啊,他帮帮我们打开啊,啊不帮我打开啊,不帮我打开,那我就自己写吧。好,我们通过外面的浏览器来访问啊,我们写一个local host,然后呢四个八是吧,访问的是WEB02,然后呢,一个是不是JSP啊,对不对,哎,我们来访问到这个JSP页面啊。怎么这么慢啊?WEB02没问题啊好,访问到了是吧,比较慢啊,来吧,那我们能看到现在我们这个页面是不是已经访问到了,呃,接下来的话呢,我就会在这里面输入我的用户名,比如说我注册一个,诶就我的名字吧,啊,我注册一个,然后密码的话呢,我比如输入个123456,然后呢,这个我们暂时先不管啊,这是我们后面再去加的一个功能,然后呢,我再去点击注册的话,相当于我给后台是不是提交了这两个数据啊,对吧?那我们先来分析一下,我在后台应该去怎么去处理这个,首先你有一个请求,那么你得有一个solve对吧,在service里面呢,我通过我的request对象是把你的这个用户名跟这个密码这个数据获取到啊,获取到了以后呢,再把它调用我们的DAO是不是插入到数据库,这个注册功能是不是完成了,能明白这个意思吧,OK,好,那么你注册完成以后的话,基本上我们都会让他去跳转到一个登录页面。
07:38
是不是因为你注册完,你是不是可以进行登录了,对吧,所以说我直接让你去往一个登录页面,这就可以了啊好,那么接下来呢,我们就来把这个工作做一下,首先呢,我们要回到后台,我们打找到我们的solid这个包,我们再去写一个,我们就叫做solve。明吧,就叫做这个。
08:04
好,那么这一次我们在写这个solid的话,我们就让他去继承我们的http solve,这个都记得吧,好写一下啊http solid,然后呢,这一次的话,我就直接重写我的service方法。可以的吧,是不是可以啊,OK,给大家讲过嘛,肯定是没问题的啊,那我就直接重写它了,在这个里面的话呢,我们需要来完成我们这个注册的这个业务处理啊,大概呢,是这个样子的啊,第一步呢,我们先需要什么呀,获取到这个用户提交的这个注册信息。对不对,然后第二步呢啊,就是什么将诶将这个用户啊注册的信息,然后呢,插入到我们的数据库好啊第三步做什么事呀,第三步呢,就是什么注册成功好,然后呢,去往什么呀?诶去往我们这个登录页面,那么注册失败呢。
09:04
就什么还是什么,回到我们的注册页面吧,诶,并进行什么呀,进行这个相应的提示啊,就是你一定要提示用户啊,那么这个地方呢,我们来界定一下啊,什么是注册成功,什么是注册失败啊。就是用户名你不能一样吧,是不是啊,哎,如果说你注册了这个用户名,人家已经用过了,那你还能注册吗?不行,OK,好,所以说我们就来做这个事了啊呃,那么我们在这个将用户的注册信息插入到数据库之前,我们是不是得做一些什么相应的判断啊,对不对,OK,来,那一起来做了啊,首先呢,我们通过request对象,我们来获取你的用户名,等于request点好get我们的perter是不是写一个user name呀,能看到吗?再来获取我们的密码,等于request掉get perter就是我们的password OK,获取到了以后呢,我们先不着急把它往数据库里面去插入啊,而是要干什么事啊,我们先这样哈,啊,这个是第三步,我们这个是第四步啊,我们再来加个第二步吧,就是判断,哎,判断这个用户名是否可用啊,能理解吧,怎么判断是否可用啊,那我就得拿上。
10:20
这个名字是到数据库里面查一查啊,OK,怎么查呢?那我们就得用到我们的DAO了啊,那我们把我们的DAO诶给它创建出来啊,就是用户的DAO,等于你用一个DAO in宝对不对,但是这个里面的话,大家注意了哈,它里面呢,并没有说这个查,它里面只有一个什么根据用户名跟密码去查的吧,但现在我们注册的话,我们是不关心密码的,所以说我们是不是得写一个方法,是根据用户名去查的呀,对吧?OK,来,那我们再加上一个方法。好,就是by username就行了哈,我给你传一个这个username就可以了,能看明白吗?然后呢,这个方法的话呢,我们就需要在我们的实现类里面也给它加上啊好,实材类里面我们来加一下啊,提示一下哈。
11:14
OK啊,那么其实这个方法写起来的话呢,跟我们上面的这个方法也没啥区别,所以说呢,我就直接拷贝了哈。就一个是根据两个条件查,一个是根据一个条件查嘛,对吧,然后呢,这个我们就不要了嘛,这个去掉来,这一列都去掉了哈,都去掉诶去错了哈。来把这个去掉,那么这些呢,也都去掉,这个地方的话呢,我们就把这个去掉是不是行了,然后的吧,然后呢,这个地方进行查询,拿到结果集,拿到结果集以后呢啊,我们再进行什么处理啊,最后呢,给你返回一个什么用户对象啊,如果说没有查到的话,那我给你返回的就是一个空对象,这个是不是写好了,好写好以后呢,我们再回到这个位置,我们就可以怎么写了呢?User DA,然后干嘛呀。
12:04
哎,就是get user by username,然后呢,把你的这个传进去,传进去以后呢,它会给你返回一个用户对象,那么接下来我们是不是要做一个判断了,好做一个判断啊。来如果说用户是不等于空的,那说明什么呀?哎,这就是什么存在了吧,那就是我们的注册失败对不对啊注册失败,然后呢,Else呢。是不是注册成功了呀,啊,就不能说注册成功啊,就是什么呀,可以啊注册对不对啊,就是可以进行注册了啊OK,那么现在这句话我们写的就是当你注册失败的话,我们希望他回到我们的。注册页面码,并进行相应的提示,那么这个地方我们又要用到我们刚刚学过的一个技术,叫做转发,转发之前呢,我先在request里面去绑定一个数据啊,叫做什么呀,Message,比如说呢,我就告诉你啊,用户名已经存在可以吧,OK,然后呢,我们就来写了哈,Request get requestpa吧,好,去往我们的啊,JSP,然后呢,我就写成一行了哈,直接在forward就可以了,Re EQ re ESP传过去,上午写的时候我是把它拆成了两行代码,现在我把它写成一行代码,能看懂吗?OK,那么再回到我们这个注册页面的话,我们在这个地方我们就要进行一个处理了,在这个用户名称后面,我是不是希望它去显示一些数据啊?嗯,是这个意思吧,来显示一些数据啊,显示什么数据呢?那就是Dollar,好,我就直接写一个message就可以。
13:49
如果说你想让它有一些样式,那么我们依旧是可以通过哎,我们的这个style来去加的啊,Style里面呢,我们加上一个样式,简单的样式啊,就是SPA,好这个加上一个color,就是red看到了吧,OK,那把这个选好以后呢,其实你注册失败的这个我们就已经处理完成了,那么接下来我们的注册这个处理这个注册成功,如果说可以注册的话呢,那我们就需要把这个数据呢,给它插入到我们的这个数据库里面了,那么这个怎么插入啊,我们是不是也得再去到DAO里面写个方法吧,对不对,怎么写啊?
14:27
Public,然后呢,Will就是insert一个user吧,啊那么你这个地方的话呢,你传这两个值过去也行,或者说呢,你直接传一个用户对象是不是也可以啊对吧,因为现在比较简单了哈,我就就是它这个字段比较少,我就直接传上什么呀,我就直接传这个吧,如果说哎,你注册的这个信息特别多的话啊,给大家解释一下。哎,如果注册的信息特别多啊,就什么呀,一定要什么呀,封装成,诶封装成这个对象,然后呢传递,那么现在的话比较少哈,我就不再封装了,把这个切好以后呢,我们再回到这个食材类里面,再把这个方法也给它加上。
15:18
好,那你这user,那么这里面的话呢,我们再来写一写啊呃,那我就直接TRY吧,Try catch,然后呢,Finally。好,来写一下怎么写啊,首先连接你是获取到吗?Connection等于叫做connection u get connection是不是获取到了?好,它有异常,这个异常的话,我们就catch起来吧,好吧,来有这个异常啊。然后呢,拿到连接以后呢,我们再写一个搜L语句,好insert into t BL user给它的用户名,还有password插入数据value呢,就是两个问号,能看懂吗?然后呢,拿到我们的prepared statement PS等于connection.prepared statement,再来设置值第一个string。
16:15
好,第一个给的就是我们的用户名side。好,第二个给的就是我们的password OK,这个写好以后呢,我们再来进行执行啊,点I,诶这就是update了是吧?OK,那么完成以后的话呢,啊,其实这个东西如果说你不想要那个返回值,那么这样的话就可以了,如果说你想要一些结果的话,你可以把那个返回值是不是给他接收回来啊啊那么现在的话呢,我就不再接收了哈,我就直接让他什么注册就行了,那么注册成功以后呢,这个开始里面如果说有异常啊,我们就给大家这个打印一下这个异常啊好,最后的话呢,我们把这个connection啊有T给大家什么关一下,这个是不是写好了,好,这个一常我们也给它拆开取一下,好,那这就写好了,来写好这个方法以后呢,在我们的这个地方,我们就可以使用了啊,你看就是user DAO点2INSERT user,把你的用户名跟密码传过去,然后成功以后的话呢,我们再什么呀,来去往我们的这个登录页面是不是可以了,对吧,怎么去往登录页面呢?就。
17:22
就是啊这个吧,注册成功去网登录页面啊。好写到这,然后呢,这一步我们就不要了,注册失败呢,啊,我们就回到这个。好,注册失败就回到这个注册页面,并进行相应的提示啊好去往登录页面呢,就简单了,我们直接sendduct是不是行了,重一下是不是可以了呀,来你去玩我的这个老夹。怎么样,能跟上吗?嗯。啊,大家把这个稍微看一下哈。这个业务还是很简单的吧,好,那把这个想法以后呢,我们接下来就来做一个测试啊,哎,还不行是吧,你这个骚就写完了,是不是还得配置啊啊来外部的插包里面,我们还得进行进行一个配置啊啊我就把这个呢拷贝一下,然后呢,在它下面呢,我们再去配上一个solve,但是呢,这个solve呢,我们就应该叫成solve了吧,来copy它的全类名。
18:27
好,放到这个位置给它替换掉,然后呢,像这个名字的话呢,你就随便写的啊,但是呢,不要跟别的一样就行,然后呢,一定要保证这个跟这个是一样的,然后这个呢,我们就给它写成写杠adjust,就是你在页面中你要发送什么请求,那么你就在后台呢,跟他什么对应起来,明白这个意思吧,好,那把这个写好以后,我们就会来做测试了。来清空一下,我们把这个重新启动一下。
19:02
啊,启动成功以后呢,我们先访问到我们的注册页面,然后我来写上我们注册的啊,比如说我注册一个,哎,我的名字是吧,密码的123456,然后这个东西现在你写不写都无所谓啊,然后呢,我们现在直接注册早,诶他就来到了我们的一个。登录页面了吧,OK,来到这个登录页面,那说明我们注册成功了吗?成功了啊,那大家来看一下,我们回到这个数据库里面刷新一下,你看这个数据是不是进来了,OK,好,那么假如说我们再来演示一个注册失败的效果,那我还是去注注册这个名字,123456,我再来注册,大家注意走哎,你看是不是用户名已经存在了,对吧,这就回来了啊,那么这个其实就是我们的一个注册功能。啊,简单实现的话,这样就可以了,那么我们现在在这个基础之上呢,给大家来分析一下哈,如果说我们想做的更好一点,对吧,就是对于这个用户的体验也更好一点,那么我们可以怎么做呀。
20:04
啊,听我说这个地方就是用户名的这个校验的这个问题,我们需要处理一下,为什么呢?我来给大家分析一下哈,假如说。这是我的一个注册表单啊,我们这个写的很少,才总共才三个,还有两个还是重复的是吧,但是呢,一般情况下那个注册表单那个内容是特别多的。是不是啊啊,恨不得啊,把你的所有信息都给你收集过去。对不对,什么用户名啊啊密码呀,你的性别啊,你的出生年月日啊,啊,你的这个家庭地址啊,啊什么WiFi密码呀,什么银行卡密码是吧?啊都给你收集过去对不对啊,那我们想表达的意思就是什么呀,它这里面的表单上是很多很多的,假如说我辛辛苦苦的把这个都填写完了,然后呢,我一点击注册,他又回来了,告诉我用户名已经存在。
21:07
那我还得再辛辛苦苦的再写上一次,这个时候我心里面就犯嘀咕,这个用户名到底能不能用是吧?啊,注册了我就害怕了。能想明白这个吗?OK,所以说呢,我们就希望怎么做呀,我能不能在用户点击注册之前,我就告诉你这个名字能不能用啊,这样的话不是更好一点,所以说呢,这个功能呢,也是大家在这个平常上网的过程中经常看到的一个功能,当我输完这个用户名以后,明白吧,输完以后,我输完这个以后,我是不是紧着要输下面的了吧,就是当你去输下面的时候呢,哎,这个地方我就已经给出相应的提示了,这样是不是更好啊,那么这样的话呢,我就可以什么在你真正去注册之前,我就能确保这个能不能用,如果说你及时告诉我这个不能用,那我就提前怎么着啊,诶提前给他什么做一个修改是不是更好啊,OK,那么这个技术我们就需要通过我们的异步请求来做好,接下来我们就来给大家去说异步请求。
我来说两句