00:00
当数据走到后台的时候,那我就需要在后台当中把它的功能给它补充完整了,那我在我们的程序当中提交表单,它指向的后台功能是in,所以拷贝,拷贝之后在我们的ctrler当中把它增加上public string,然后do log in。接下来,Request mapping。咱们叫do log就可以了,写完之后,那我们现在啊,什么都不做,先直接写。我们叫做man,我先看看我点击之后有没有效果,先不做任何的查询操作,咱们直接跳转页面,因为如果你成功的话,你去到的就是我们的后台主页面,所以我点击new来创建文件,叫做点DSP。好,括号、百分号、圈配等于UTF杠八,先把编码统一,然后我随便写点内容,只要跳过来那就对了。
01:09
好,那我现在把这个写完之后,把服务器重新启动一下。启动之后点击按钮,只要跳到页面,说明整个的流程呢是对的,然后我再来添加登录的功能就可以了,好,那我现在刷新,刷新之后我点击登录点,点完以后忘了写账号和密码了,这个我随便写,因为没有验证嘛,嗯,好,点击登录点点完之后大家可以看到找到了这个page,这就说明啊,我们的跳转是对的,好了,那没问题的情况下,我现在要把逻辑补充完整了,我们这里要实现的就是我们的执行登录功能。那你执行登录的话,那你的流程是什么样子的,你的逻辑是什么样的呢?我们一块儿来分析一下,首先你点击按钮的目的是为了把表单数据给它提交到我们后台,所以我的后台应该把数据首先先获取到了,所以第一步要获取。
02:19
表单数据,那么表单数据当中你要想获取的话,那必须在我们的表单元素当中有一个name属性,它的name属性就是用来传递表单值的那个名称,那么你这个名称在后台我就可以把它取到。那么怎么取呢?我们其实有很多种方式,最简单的方式我们早期的request。我通过那个HT是的方式,但是稍麻烦,他要先把请求对象获取之后再去调用方法来获取表单数据,不是很方便,那么来我们接着写我们的二第二种方式是什么呢?将我们的表单数据作为我方法的参数给它列出来。所以在。
03:18
在我们方法的参数列表中增加表单对应的参数,那么要求是什么?名称相同,名称相同。什么意思?表单当中的名称它是logging account user password,那你的这个位置也得是这样。所以string我们叫做log in account,还有一个写上叫user,名称必须相同,否则它封装不成功。可是呀,这么写能拿到数据,但也不是很方便,万一我们的表单元素的数据比较多怎么办?那这样的话你就需要在参数的列表当中去增加很多的参数,这样的话显得会比较臃肿,看起来也不是很方便,所以我们还提供了第三种方式来封装我们的数据,来获取我的表单数据。第三种。
04:19
第三种其实就是将我们的表单数据。给它封装为实体类。之前在我们的command。类里面有一个U,那这个UR呢,我们其实当时就是为了封装我们数据库当中的用户数据,那我现在我们这边就要添加对应的属性了,好,我们叫log in account,还有我们的来string,我们叫user password,嗯,写完之后增加它对应的set get方法就可以了。
05:08
在实体类当中,我们增加了登录账号和用户密码,那么它对应的数据库要增加相应的字段,否则它无法封装。所以在我们的这张表当中,我们点击,然后增加两个字段,一个叫登录账号log in account,然后类型是长度是255,没有问题,点确定。接下来我们再来点一下,我们这里是我们的密码叫user password类型是密码,那长度呢是255,这也没有问题,点击确定,那么把字段添加以后,我在添加对应的数据,我们就叫张三即可。好,提交数据,只要你在登录的时候,你输入的用户名和张和密码都是张三,那么你登录就成功了,那如果你的账号和密码不是张三,是别的,那么你登录就失败了,所以啊,在我们流程当中,我现在我们来说一下,我这里就不再是我们的一个一个的表单元素了,而是我们封装的实体类,他们就叫U。
06:19
行了,这一步咱们算是有了,接下来我们准备来进行第二步,那么这里要改个名称吧,咱们写个一,那么这里呢,我们写一杠一,一杠二,一杠三,好,那我接下来我就写第二步了,第二步呢是我们把表单数据呢作为参数来查询数据库,看看用户是否存在,所以我们查询用户信息,那你查询用户信息,我们要把之前的user service给它装配到我当前的控制器当中,所以我这里呢会有一个service,但是里面的方法是没有的,我们要额外添加,所以啊,在这里我来写上叫做user service点我的目的是为了查询,而这个查询其实是为了登录去查询的,所以我起个名字叫query for log in,我为了登录去。
07:19
进行查询,那你的条件在哪?你的条件不就是表单中的数据,而这些数据不是已经封装成一个实体类user了吗?所以就把它写上就可以了。那么你查询的结果其实就是数据库当中的用户信息,所以我要把返回结果给它得到来UR,我们为了跟我们表单中的UR区分开,我们写上叫DBU数据库当中的用户信息。好,那这一步我们写完之后,我要把这个方法补充完整,点击create。接下来我们再把这个给它实现了点。
08:00
增加,增加完成之后,我们要在这里到点quary for log写完以后把给他来准备好,接下来这个方法我们要给它实现create,那这个其实也并不是一个很复杂的S文,所以圈A我们select。好,接下来select星from t_US文跟之前的很像,但是它有条件,那么它的条件就是log in account等于参数,And user password它等于参数,那么参数我们是用问号作为站位符,然后给它传进来,可是my bet它不支持这种写法,它要把问号转换成其他的符号,那么就是井号大括号,然后这边也是井号大括号。那大括号里面写什么呢?这时候我要取决于方法的参数类型,如果你的方法传递的是一个引用类型,一个实体类,那么我们大括号里面的名称就应该是这个引用类型的属性名称,所以我们来写上就叫log in account,还有后面的叫user password。
09:23
好了,我把这个已经写完了,写完之后它返回的结果就应该被我取到,那么取到之后在这个位置我就拿到了我的dbu,但是你可不能保证说这个数据库里一定有你想要的数据,所以他应该进行判断,所以我们的第三步,咱们要判断我们的用户信息它是否存在,那我如何判断它是否存在呢?很简单,我们要看看你得到的结果是不是空就可以了,所以我们if,如果DB的它不等于空。
10:04
你不等于空,说明你把数据查到了,那如果查到了说明你登录成功了,所以我写上登录成功,你登录成功的话,那不用说呀,你就该跳转到主页面了,所以跳转到主页面,OK,那我现在把拷贝过来。接下来。如果你的用户信息不存在,说明数据库里根本就没有这个账号和密码,那所以你的登录就失败了,所以登录失败。那你登录失败的话,我应该跳转回到。登录页面。并且提示错误信息,所以啊,我这里应该先把那个错误信息,我准备好error message。
11:01
我就写上啊叫用户信息,不存在用户信息啊,或者叫用户账号吧,啊,咱们叫登录账号或密码不正确,号或密码不正确,请重新输入。好了,那我现在把错误信息已经准备好了,你跳转页面的时候,要把它传到我们的登录页面,要让用户看到,所以我要保存一下,这里我写上叫model。写完之后,那在这个位置我就写上叫model点。I的attribute就叫errorr message,好,写完之后,那我就写上了,叫errorr message,嗯,接下来我们该跳转页面要回到登录页面了,那我们这里啊,我们之前我们写了一个,那我们写一个字符串来跳转页面呢,我们SPVC框架默认会采用转发的方式,但是其实除了转发以外,还有一种方式叫重定向,所以我们这里采用重定向的方式来进行跳转,所以return。
12:18
我写上咱们叫做log in,这是我准备跳转的页面,但是我要用重定向的方式,叫redirect。好了,那现在呢,我已经把这个功能我们写完了,对不对我们并不清楚,我们来验证一下,看一看我们的逻辑是否正确,把这个停掉,停掉以后,那么我们重新启动。重新启动以后啊,我们来输入我们的账号和密码来观察一下。好,我们后退刷新。接下来我们来写上账号和密码,之前我们数据库当中其实有一个张三,那我现在就把张三给它写上,先看一看正确的场合它能不能够跳转成功,所以张三好,我们的密码是张三,我这里并没有把它用密码框给它显示出来,而是用我们的文本框,就是为了让大家看到我们输入的是什么,好,那么这么写完以后,这个肯定跟数据库是完全一致的,那么应该登录成功了,所以点击登录点,点完之后去到了我们的主页面,这就对了。
13:34
好,那接下来我们后退,后退以后,那我这就可就不是张三了啊,我们是me me。那这数据库里哪有这个用户啊,根本就没有,那么一定会发生错误,并且我们要把错误信息给他展现出来,好,我点击登录点,点完按钮以后,大家有没有发现好像有点变化,那这个变化是不是我们想要的呢?我们说了,一旦你的登录失败,你应该回到登录页面,诶我现在确实还在登录页面,还有一个他说了要提示错误信息,但我这儿好像没看到错误信息啊,不过你有没有发现在地址栏的上面多了一个叫arrow message。
14:24
那么这个恰恰是不是我们这里就有啊。所以啊,我们认为这行代码其实是走到的,只不过我们现在的页面效果可能不是我想要的,这个我们在后面进行修改。
我来说两句