00:00
大家好,上节课呢,我们将呃,用户的注册信息已经通过注册,这个sol已经添加到数据库中了,但是想象一下,如果用户现在绕过表单自己编写一个表单,那么一样可以提交到这个位置,我们没有做别的限制,那这个问题来了,那我们就可以在这里边接收到的表单一个一个的验证,验证用户名是不是为空对吧,用户名是不是唯一验证这个验证码,呃,输入的正不正确在这块,但是呢,如果我们在这个里边。去写这个验证的消息,就会造成什么呢?造成我们注册这个代码的业务逻辑不清晰,那我们现在这个步骤就比较清晰,比如说第一步设置字符集,第二步获取参数,第三步加到数据库,对吧,那第四步呃,加入成功失败进行判断四步就可以了,如果我们再把其他的逻辑加进来,那这个逻辑就会混乱,所以我们用到另外一种技术,叫做过滤器,像soul过滤器,监听器,这是属于呃,咱们学GSP这块的三大组件。那过滤器的原理呢,也是比较简单的,我们在这块给大家画个图。
01:06
比如说我们在用户在浏览器这块请求的时候啊,请求到服务器。服务器这块有一个。服务器里边有个。那个。那有一个,呃,我们正常的话,用户请求是直接请求到这个so,然后so数据再直接返回到我们的客户端,是这样的一个一个过程。那如果我们加了一个过滤器,你看一下,也就是在so之前加一个过滤器。属于三大组件,也在服务器上加的,不是客户端的加过滤器,这样的话。如果这两个请求的地址是一样的话,那么过滤器的地址和服务器的地址是一样的话,那我会先请求到谁呀?先请求到这个过滤器,这过滤器去判断。
02:00
判断用户输入的数据合不合法,你看过滤什么东西对吧,你只要这里边根据你的业务逻辑判断就行,然后。如果不合法。过滤器直接。就发回了,根本都不用到这来。根本就不用到so,直接在过滤器这块标上。啊,过滤器是file,呃。过滤器,当然这两个的请求注解的方式,嗯,它俩得是一样的才能请求先到过滤器拦截一下再过去,那过滤器呢,使用呃,是面向切面的这样的一种技术去实现,后期咱们学框架啊,呃,SP啊,经常会用到类似于这样的一些技术,比如说spring固态啊什么的,用到的这个都是比较多的,那如果他同意过滤这块绝对没问题,那他就会怎么的。通过滤器,它再交给so,它就转交给so,这样的一个过程,然后so它就返回数据,它就不用经过经过过滤器了,直接返回到客户端。
03:00
就可以了,这大概是一个这样的一个过程,那我们验证的这样的过程,为了不让它破坏我们注册的业务逻辑,就这四步对吧,很简单,那我们使用过滤器来进行一下,呃,拦截这样注册,那我们新建一个。嗯。在SR7这里边新建一个,这回我们建的不是类,也不是JSP文件,也不是so类,也不是监听器,这会过滤器创建过滤器那包名我们就com.Mo嗯,L monkey.file就这就行啊。那过滤器下边那么过滤的,呃,因为包围不一样类型,我们可以跟那类一样,Re GI。可以了。啊,我们创建了这个过滤器,因为在不同的包下,虽然这俩名称一样,在不同包下是没问题的,你看过滤器的方法,那我们将用注解的方式,当然跟so一样写法,在外边点叉ML,外边的叉L里边去配置我们请求的地址,对吧?那我们用注解的方式是比较方便的。
04:00
你用差你写,呃,你写多条记录比较麻烦,所以咱们就用注解的方法去解决,但是S呢,可以有多个,比如说第一层过滤,第二层过滤,第三层过滤,四层过滤,那先执行哪个,后执行哪个,那我们如果想要这样有信号顺序的话,那么我们就得需要在外边的插,里边写在前面的是先执行,写在后边的后执行,还有那个顺序执行,所以需要有先后顺序,我们在这里边执行,那再有就是。如果有多个。过滤器,比如说一起访问十个都经过一个过滤器,那么我们也得用外面的插码驱。如果这十个的请求地址。它有共性的话,我们可以用通配符的方式来完成,那我们现在也用通配服完成,现在就请求一个,所以这比较简单啊,那后期我们做登录的时候,比如说整个后台全部拦截,那我们到时候再用通配符的方式,或者是用外部的查文件的方式去弄,这里边给个方法对吧?呃,当销毁的时候执行当呃创建。这个呃,过滤对的,那我们重点是用这个。
05:02
看一下。这里边有两个特点有几不是有两个特点有几个,呃,特点什么的,如果你不想要通过,你直接理赔就可以了,如果想要通过,一定要调这个,再把请求对象和想对象给传过去这块。是啊。通过。则使用这条数据。不过。通过过滤器。则直接return。就可以,那我们这块先不写。然后再有一个特点什么呢?你看一下我们鼠标放到这个上面,你看。它是。对吧,而我们使用的是HTTP,你看我们其他的里边,我们是HTTP。对吧。两个不一样。那么。
06:02
这是负类。我们得用子类里边用,不然的话我们获取不到那个参数,得用通过HTDP的类我们才可以,而它是负类的,不带RTP的没有,所以我们第一步我们就需要进行一下转换。把这个。做成htt,等会吧。全都是。Re e e,或者我们起一个呃,别名大家能看得清楚啊?强制转换过来。把这个。我们转换成负类的。ST,这样的话,这个request里边才能够获取一些我们想要的参数,对吧,比如说session的数据啊,呃,得到客户端参数的数据啊才可以,不然的话是不行的,那同样。我们。也把相应的。
07:00
嗯。想要的这个。变成re吧。简单一点。Re,好,这样的话我们就将这两个都说话了,当然我们得需要干嘛打上。那我们在这里边做一下简单的一个验证,我就不全一个一个验证,这个不会空,那个不空的对不对,其实做法都是都是一样的,那么我首先需要做的就是。啊。因为这里边主要设置字符集对不对,把字符集先用一下,但是这里边就是IQIESQ不是这个,那提交这块也。变成这个不是原来的那个对吧,正好我们都得呃去变一下。一个。设置类型没有病例,而TP我使用的是,呃,Re。RES。没问题啊,看一下。
08:06
这块应该不是我是复制粘贴的。Re。这会。想对象啊,好看一下。怎么还不送?而是GDP。我上。好。一会啊。然后显示字这两个也传过去了。那我们现在就是获取参数,你想判断哪个不为空,你就现在就判断哪个不为空,我这里边啊,然后在这里边也可以去验证用户,微信都可以,你这里边会写长长的代码,那我们这里边就先获取一个参数,比如说。Q点。但是获取到,假如说我们获取到用户名,我们就判断这一个,那你判断一个和判断十个,其实呃是一样的。
09:04
Username等于。通过请求对象里边获取这个用户名,然后我们判断。如果什么呢?如果username.eq。怎么?呃,如果它等于空,那么我们就干嘛呀。这块先获取一下打印。呃,PT,比如说O等于re.w好,回去得,这那我们在这里边输出一下。那个。Print。哦。P。啊。到这有错误就解决啊。然后判断,如果用户名等于空,那等于空的话,我就out点输出。
10:12
比如说。输出。结束这块。用片判断一下,然后这里边我们呃弹出一个弹出的方式,当然了你这块可以比如说呃,输出一个。呃,类名之类的,前端用JS去设置,然后做一个漂亮的弹框都是可以啊,比如说我们这边讲。嗯。用户。用户名称不能为空。用户名不能为空,然后我们跳转到重新注册的这个位置,Location。oc.hif等于。这到哪呢?注册点再重新注册。然后我们每天就不往下走了。
11:03
对吧,那这条宇宙就没执行到,那过滤器就没让它过去,没它过去,但是我们这。把它关掉可以。但是不关闭没有影响,只不过占资源而已,这样的话用户名归空,在过滤器这块就给过滤掉了,那我们来试一下,我们来传一下空用户名,但是空用户名呢,我们得想想办法,用表单能提交过来,所以我在表单这块,我先把这块。哦。这个去掉。去掉的话,你用户名为空或者什么他都可以提交过来的,对吧,回来刷新一下。啊,用户没空,我们现在就可以提交的,赶紧当然了,我们写完这个也需要干嘛呀。重启一下。好,小心点。成分提交。
12:00
注册这。你给我来34行。过滤器,我们必须解锁这个文件。啊,这没有。没有错。玻璃器。S。如果用户名等于空。过来。然后S7SPT这块RO location.re EF等于注册点JP,这没问题,用户名不能为空。没有弹出。发试一下。嗯。不能为空,现在是为空的注册。拦截是拦截成功了,但是没跳回去,没跳回去。我看一下。
13:00
应该是起错。的星球。看一下,查看一下它输没输出过来,然输出过来那加SSP用户哦,少了一个分号对吧,所以它没有弹出来,那我们这个JS错误。这块加上一个根号。就搞定了,当然我们最好在这块以分号,因为vascript一定要是要以分号结尾,不然的话写在同一行,因为输出的话是同一行,没有换行,如果换行的话也可以代表分行。拍语法咱们扎好这么严谨好。我们刷新一下。啊,用户名不能为空,对不对,你确定又回到这个界面了,这就是我们这块,呃,判断的这样的结果,那继续往下来。我们说除了判断一下用户名能被控制外,那我们还最好还判断一下谁啊,判断一下这个验证码,我们让他,呃。这个验证码让他必须得是一致。当然用名V1的话,那你你自己再去验证,跟我们写的那个阿贾克斯那个方式是一样的,那我们先通过呃,30里边,我们先获取到服务器传过来的这个。
14:08
先获取,咱们先从参数里边获取过来的这个,呃,验证码。I。IQ点呃,Get插入过来的,我们传过来的叫做呃V。传过来的这个验证码,我们接收一下,用VD。接收一下这个验证码。接收一下这个验证码,然后呃,我们再从30里边把原有的那个验证码,比如说呃,SYS系统里边的拿出来。那我们看塞里边的,我们直接从那个塞里边呃取就行了,但是我们。呃,得先怎么了,得先获去这个session,不然的话是取出来的对不对?HTTT,呃,PS SL session SE s session,呃,等于re EQ,通过这个里边get session SE s先获取到我们这个战神打包。
15:13
获取到三之后,我们就通过这个呃筛选。里边的get at tr等等属性得到哪个呢?系统里边我们存在,我们记得叫COD对吧,通过把这个获取到,但是我们得把它转成字符串在里边。给对应的转成我们想要的这个类型,转成字画,那我们就判断一下这两个是不是相等的就可以了,对不对,比如说。如果啊,系统里边的点EQ和。我们这样和我们微这总爱加这个。呃,代号咱们都在这错了好几次了,V ly COD传过来的这个验证码,这两如果相等,那我们是通过的,那么反过来如果不相等,加号我们干嘛同样。
16:03
使用这个卷。我们只是提示不同而已,比如说提示验证码输入错误。验证码输入。弹出一下,然后返回,那如果这个都不是的话,那我们就直接过去到注册那就可以了,来我们试一下。专心一下,比如说用户名,这个不为空。但是验证码我随便输入一个肯定是正确的,不错。验证码有误对吧,那我这两个输入的都没问题。比如说验证码。第二。哦。WDA。其他的我什么也不输入。那都输入吧,咱们让他过一下看看,过去一下看看。当然这几个新的了。因为。咱们现在。
17:01
呃,没有做表单验证。看捞一点加证明我们没拦截住对吧。里边。我刚才随便输入的一个一个用户名,看一下记录有没有多35条,刚才34条多了一条,证明我们添加成功,对吧?那这个我们才能完完整整的把注册这个写完,我们后推一下前端表单验证,那后端如果用户绕过表单,那我们还可以使用什么?还可以使用这个过滤器来完成这个验证,这就是我们注册的这个全部的一个呃,过程,当然了,好多地方没有丰富,但是方法已经教给大家了,那直接按照这个步骤一步一步做,然后每一项去验证,去完善,把代码封下来就可以了。当然了,你如果在后台,比如说咱们在添加用户的时候,没有像注册做这么复杂,你也可以把它完善,按注册这个步骤,或者添加商品的时候,添加类别的时候,也都要按同样的步骤,咱们讲课同样的东西就给大家一次,大家去模仿就可以了,并不用说每一次我都写的很细,这样的话大家学习的时间就比较长,还要需要自己动手去练习才能把它完成啊,那这节课呢,我们就呃到这里,下节课我们就开始呃,有用户了,有注册了,那当然是登录对吧,登录和退出这样的一个操作步骤啊,谢谢大家。
我来说两句