00:00
这是个logging方法,那么logging方法呢?我们这边要写个叫string log。老。子俊password,哎,我为什么需要在这边写两个参数,是不是我其实就已经想着我要从请求里面获取这两个参数啊?那么我就把它放在这。好,那请问一下我这边是不是需要private use basic service啊同学们?哎,是不是啊。是不是需要service啊?好,Use basic service.logging方法把我们的logging ID放进去,把我们的password放进去,它是不是会给我们得到一个user basic对象?没错吧?然后我们就判断if use the bicycle,如果不等于now,是不是表示验证成功啊?验证成功,Return redirect。我们到哪里去呢?Redirect,我们要到哪里去呢?好,我们可以到另外一个CTRL上面去。我们可以到另外一个CTRL,或者我们可以到index页面上去,但是。如果我到index页面上去的话,我觉得我光做一个登录验证还不行。
01:03
是不是比如说我需要到index页面上去。Index界面。啊,我需要到index页面上去,我光有它还不行,怎么办呢?我还需要干嘛呢?我是不是还要去查询好友的好友的列表啊。所以回到这边来。List。User。Bicycle,这个叫friend。Friend list they use the basic get friend list。这是第一个。那么你根据这个get肯定是查不到的,那怎么办呢?咱们得需要用use basic service.get list把我们use basic把它放进去。是不是?好,这第一步登录验证。登录验证,然后if use the basic不等于。好,读进来。啊,如果你不等了。如果你不等那的情况下,我们得到好友列表,同时我们要得到日志列表。
02:02
是不是,那你得到日志列表再来回到这边来,Private。Service service这个。然后topic service再回到这边来。点get list把我们use basic把它进去。得个list。好了,把这两者全部设置进去,所以回到这边来,Use basic.set。List进去,Use它去。好,如果我们这边已经得到了,我们把user basic把它保存到三线里面去,所以我们在这边补一个http session。啊,我们补一个筛选,那这筛选报错,报错是因为没有他们的那个那个dependency是吧,同学们补一下。回到我们的model。再回到。二幺或者dependency。怎么加进来?
03:01
这两个全加进来,这里面这个也加进来是吧。第一个是我们要用MYSQL。第二个我们是用time leaf全部加进来。应用OK。好,这样我就把它加进来,再打包就没问题了。OK,所以回到这边来。啊,如果有是白这个不对了。那么我们回到这边来筛选,点set attribute。Basicc。Use bicycle,没错吧,我们也use bicycle,然后把它放进去。Else的情况就是你登录失败了吗?Return login。是不是?怎么就继继续回到登录页面嘛。是不是否则我们就去index页面上吗?不就是这样的吗?没问题。但是大家不要高兴的太早,我们这个思路是对的,但其实这里面是隐藏的一些bug在里面的,这个bug不是大家的原因,是我的原因。因为我们前前面在讲best do的时候,有个地方的细节,我们是代表操作,还没有涉及到多表操作,所以呢它不会出问题,现在呢就慢慢这个问题会会会会暴露出来啊,一会儿报错再说。
04:11
那行这个user ctrl,咱们得需要在配置文件里面把它配置一下。ID。好,我们就叫user了,行不行?com.at硅谷点股纵点CTRL,点好user ctl,然后这里面是不是需要两个property name第一个。Basic service是不是同学们好,Basic。好,这第一个,第二个property name等于topic service re。Topic什么,请大家写的时候细心一写,不要去做其他事情啊,有些同学这边拼写错了,和上面明显不对应,那不对应就出问题了,因为当前这个XL我只给大家介绍了XL的一部分和三部分,中间是不是个叫文档类型定义啊?那个注释被我删掉了啊,叫文档类型定义,我没有给大家介绍。
05:03
如果我们要不这样吧,我现在就给大家介绍一下。我现在就给大家介绍一下啊,这样大家这个这个写代码这个出错的概率会小一点,会给你一些提示。啊,中间一部分叫文档类型定义,啥叫文档类型定义。就是规定当前的X文档什么该写,什么不该写,这叫文档类型,定义是这么来写的。Type。Beans。好,就这样子。然后我们在这边定义element第一个元素病,病里面有啥?有病星说明有多个病,元素星表示零到多个,Element表示当前be是个元素。再来。再往下。下一个。Element病病里面需要一个什么呢?哎,它可能会有property。心可能会有多个。啊,Property会有多个,所以我再来描述,Property是啥呢?它也是一个element。
06:01
Property。那这个里面它已经没有子元素了,我们这边可以写个叫井号。PC data。你就把PCD PC data。空格。你就把PPC带的响应的是记不上。啊,就把它打比方打成字符串啊就行了。这个不需要掌握啊,对大家没有要求,只要我边写边解释,大家能够算听得过去就行。好,B里面是不是有这两个属性,咱们没有描述啊,再来描述它里面的属性。咱们如何去描述属性呢?叫h build list,叫at list。病病里面有什么属性呢?ID这个属性,ID属性是什么类型呢?ID这个类型。啊,它是ID类型是必须的叫。不能少,叫required。所以你看。这个ID是不是就不报错了,你看我把它删掉。下面这病是不是就报错了?他说ID是required,看到没有?他说当前这个元素doesn't have,他说没有一个required的ID,是不是啊?
07:09
好,把一加进去。再来。第二个属性。Attribu list。B里面还有什么属性呢?Class属性。那么这个class属性叫CD,就认为是死菌。啊,可有可无,Implied。啊,我只能这么去给大家解释啊,因为咱们XM没有要求。啊,你认为B里面一个class属性C表示死菌啊,I'lied表示可有可无,这属性可以删,删掉它是不会报错的。再来下面property里面是不是还有两属性啊,咱们需要把它描述一下啊,这两个还在爆红,咱们需要把它描述一下。Property,稍等。Could you see。哎呀,这个好讨厌。Attribute property这个属性啊,Property什么属性属性。
08:02
LA属性也是CD。啊,Implied拷过来。有问题吗?没问题吧?啊,没问题啊,大家是不是是不是听了有点吃不消,实在吃不消我们就缓一缓啊,我把这个说完。Attribute property。下面是不是还有个if。If是什么类型呢?我们可以写个叫IDF。啊,叫ID。井号。Implied。好,就这样子。呃,稍等一下,让我看一下啊,我有没有写错这个ID,好像他还是在报错。Invalid ID引用。我拼错了。
09:04
稍等一下啊。我拼错了吗?果然,你看我说了吧,我把这个写上去都是有好处的。是不是啊,是有好处的。哎,怎么这边还报错了呢。这个真的是完蛋了。啊,不知道哪边这个这个出毛病了啊。你看一下同学们。是不是拼写不一样,那其他的是不是就就对了,哎,那说明这玩意儿我拼错了是吧,同学们,哎,他你看,所以这就是我加这这玩意的好处是吧,他能帮你检测一些错误。Use basic service是吧?是吧,同学们。Basic service没有吗?叫user service,咱把它这边名字改一下行不行,同学们把这边改一下。Use basic service service没问题。这个病字怎么还报错了呢?
10:00
我哪里写的不对啊?少了个小括号,他说。他是在病子这边少了个小括号。Element是我上面这个doc type beans中国号。这应该没写错。哦,知道这边不能空格。好,就这样子,OK。中医不容易啊,蒙对了。好了。信号表示允许零到多个病,死里面允许零到多个病啊,就这意思。好了,那这文档我就把它写完了。洗完之后,刚才这个这边刚才抽风啊,抽风这个不知道啥啥情况是吧。报错了。哇,这居然这个override报错了。这个好讨厌,飞居然还报错。打开看一眼。Web,这不对的吗?好奇怪啊。加X对的呀。他对了吧。
11:00
那刚才是啥情况。再打开一下。就不报错了是吧,再回到这这这这又是啥问题。估计是是什么家暴的问题。好了吧,现在可以了啊,没问题,不知道他为什么突然给我报一大堆错误。行吧,现在我已经把它全部全部搞定。那我现在我是不是得发个请求啊。现在我需要发个请求。发个请求。找到user了。是不是?找到user,然后就能找到user controller,然后我们需要去定位的user controller里面的log方法。对不对。然后他就能给我做验证。好,我把段子设置说到这,咱们一起来一步步看啊。With logging。回到login里面去。这边有个缝表单,那我们这边就把它改掉了。
12:02
TH冒号。At大括号。User。年度。可以吧?哎,是吧,叫U点点路,好把命名空间把它加进去,Alt加回车。把秘密攻击改掉3W点。啊,太妹。点解,就这样吧。那么我这封表单里面,我是不是得加一个隐藏域啊?Name。是不是等于oper?Value是不是得logging啊?就这样,这样,我是不是就能找到user里面的lock方法了?那我是不是就能找到这个user里面这个logging方法。行,就是这样。我们先来试一下。
13:00
把这个library加进去。他也加进去。Artifact。删掉,重新再新增一个。点击OK,点击应用。没问题。现在我们再来试一下启动。怎么还给我报这个错?编译问题啊,不管它回到这边来怎么做呢,把这玩意儿删掉。把下面的也删掉。啊,全部都把它删掉,删完之后咱们再重新一次。啊,我其实应该点中那个模块,只编译那个模块的啊。
14:01
没关系啊,让他重新编译。好,全部编译好了是吧。这些都不要,全部删掉可以吧,都不要,我们只要一个。好,然后呢,Build build artifact,咱们只要这一个build。那行,没问题,咱们再来启动一次。好,我们看一下,首先第一步我们要看一下能不能进入到这个断点是不是啊。
15:00
如果能进入到断点,我们就成功了一半啊,但是到这一步的时候,大家就不要有太高的要求了啊。慢慢的他就会报错,报错咱们再来分析原因啊。Error deployment。这个是奇了怪了,PROJECT20。啊,他说他是非法的。这个好奇怪,我知道为什么了,因为我已经把这个rift已经删掉了,删了只有我在通cat里面还还没有把它删掉,是不是同学们。是不是这个删掉啊。好,把它拉进来,二幺。哦,点击应用。那你这边点击应用之后,点回到这边来二幺。然后这里面有个叫logging。点H是吧,同学们。好,把它换成deploy update应用。再启动。那个。
16:00
过了南京怎么了?过滤器拦截应该没有问题啊。电镀。电镀是吧,这边是没有问题的啊。登录页面已经出来了是吧,好,成功了30%再来点击登录。一点击登录,他应该会给我进入到断点。哎,怎么没进入断点。这不对啊,怎么还知道login HM?页面有缓存啊,页面有缓存,你看是不是还是到log点听见没有,感觉不大对哦。这好奇怪。这个我感觉他们那是不是我那边操作的操作不当啊。他总是按道理应该是能够给我去。柚子顶多发请求的呀。啥情况?点击登录。不对啊,你看。我这个action它总是给我识别不出来啊。是不是我这个语法,难道我写错了?
17:01
TH冒号action。爱的大括号又是点读,没错。哎呀,真是的,真讨厌,那就直接写X行吧,同学们。我暂时先这么写吧,啊叫优点读。按道理是可以的是吧。不知道是哪里这个出问题啊。后退刷一次。好,点击登录。啊,这次应该是进来了,是不是进来了,好,进来之后我们得我们得进去。注意看啊,慢慢来啊,他还没反应过来行。稍等一下啊,还点不了。好,可以了,点进去。进到这个方法对不对,然后我们再进到best do再进去。好,然后我们做查询吧。好,查询返回回去。哎,报错了是吧,他报错了,报错原因,这个原因比较简单。这什么问题?
18:01
我们我们当前的数据库配置,我们是不是写死在connection u里面的?我们可以,当然我们可以把它做成配置文件,一会儿再说,这是小问题。是不是对?这是我们碰到第一个错误,注意,一定要记住我演示的错误啊,一会儿大家用我的代码,你也会出问题的。LOCALHOST3306把它改掉。QQ总没错吧,行,修改完了再试试。刷新一下。这是第一个错误。登录好再进来看一下啊好又进来了,往下走,这次我就不再点进去了啊,直接跳过去。Use basic,咱们来看一下。说明登录验证是没问题的,User basic是不是?
19:02
登录验证没问题啊,下一步就出问题了,注意看啊,注意看下一步出的问题。往下走。我们到get friend list这边。还没做呢,别着急。这步就会报错了,我们运行执行一下。他就报错了,好,这个错误大家需要仔细的去看一下。No such field exception它的这个错误。这个错误是因为什么原因导致的呢?这个原因是我们执行这个时间来给他报错的。这个我查询是一个fid。我查询的是一个fid。但实际上请问一下我们最后返回的这个user basic,我们要把查询的数据封装成一个user basic,请问user basic里面有吗?You basic里面有Fi吗?没有吧,哪里有啊?是不是它是不是只有ID啊,它根本没有ID,所以这是我们错误的原因所在。
20:05
能听懂吗?我们这边的作用是想做什么,我是不是想找到所有好友的ID啊?但是我们这个fid确实是好友的ID,我们重命名ID。能听懂吗?这是第二个错误ID,然后它才能封装成一个一个的use basic。好,再刷新一次。这是我们碰到的第二个错误啊,也相对而言还是比较简单的。那下面我们再来看第三个错误啊,第三个错误不太好找啊。坚持一下啊,我把这个错误演示完啊。
21:06
行,再就点击登录。好,他又进入第八个。好,往下走。再看往下走。好,再来看一下。他们还是个错误。我改过来了呀。他是不是没给我识别过来是吧,同学们。估计是没识别过来啊,稍等一下再回到user。我这边改过来了吧,Sid我已经加了个别名了吧。哎,是不是啊。我已经加了叫sid已经加了的别名了啊。家里别名不应该再给我报的错误重启吧,刚才我点的是刷新啊,再试一次,再试一次啊,同学们。
22:00
好,点击登录。好,往下走。往下走,再往下走,再执行这一步。还是fid啊。奇了怪了。Selectfi ID from t will UID。啊,我现在已经没有问题了啊。清掉。删除,删除完之后点击build。Build点击。克令一下啊,克令完之后把这些全部删掉。全部删除。上完之后选出,选中当前的QQ中1.0,点击B的model。
23:04
Build artifact。这就只有一个是吧,然后咱们再来启动。好,没问题,再来启动一次。OK。好,再点击登录。好,进入了断点往下走。再往下走,咱们进入之后,进入到这个方法里面去进去。好,然后再进入到这个方法里面去,再进去。然后执行他。往下走。然后再进去。我们来看一下啊。进入到汤里面去,好,进来了啊。进来就再往下走。
24:01
往下走。往下走,往下走。再往下走,再往下走,好到这边来,往下走,我们看一下SMB这个塔啊,往下走。好,负循环,我们看一下column name往下走。看他们那,看他们那叫ID啊,这好奇怪啊。Column name还是叫fid,我要取的是别名啊。我要取的是别名,我看一下是不是我这四口就没有加单引号的问题。是不是我这边没有加单引号。啊,给它加别名S单引号ID。你看他这边获得获取到的这个fid是不是还是fid啊,只要你获取了,看name是D,那就不对。啊,那那就是不对的。好,再来一次。我看一下啊,是不是这里面ID它是个关键字啊。
25:01
SID。试试啊。感觉应该也可以啊。是吧?没问题。叫单一ID。再执行一下。好,没问题啊。咱们回到页面上去。点击登录。好,进来了,再往下走。咱们直接跑到user找到best里面去啊,咱们直接跑到这边来。直接跳过来。好,过来了吧。往下走。往下走,往下走,往下走。看他们那还是D啊。奇了怪了。是吧,你看我这个搜狗语句已经是select fids它了。看能不能。IMd.get。Column name。看label我试一下这个啊,看行吗。获取的不是,获取的是column label。
26:04
稍等一下啊。来,正好咱们来百度一下。好,回到这边来,Can come label。指定列的什么。和get。Name是吧,它的区别。建议标题。指定列的名称。As,你看看返回的是user后面的是吧?Name是不是返回的是前面的?哎,是不是相当于是个别名那行吧。对吧。那咱们这个剪切。进去试一下啊,把它换掉。
27:01
Get a label。可以吧,试试看啊,咱们先来试试看。好。在其中。直接是个断点啊。登录进来。好,然后呢,直接跳过去。跳到这边来,往下走。再往下走,再往下走,再往下,再往下走,看他们来。
28:00
是不是获取到了?ID获取到了没问题。啊,这样咱们就获取到了,那行咱们再回到1CTRL。好,我再把它跑到这个地方来,再跳过去。把这个清掉啊,看他再来看一次往下走,这次看name获取的永远都是ID是吧,没问题啊。这个把它去掉。再来看一下啊。Cannot set。好,这个错误就对了,OK,这是我们解决的最后一个错误。这个错误得留到留到下午的时候才能解决啊,稍等一下,我把它先考下来。Could you see。回到我们read me。好,我们把四个错误把它写在这啊。这是第三个,第四个,第五个。好,KK中。这个中啊。登录功能实现。出现的四个错误。
29:01
是个错误,第一个比较简单,嗯,第一个就是什么,第一个就是我的幼儿没修改。是吧,用的还是DB,这没问题吧,这是比较低级的错误啊。第二个。好,第四个我先把它拷下来啊,先把它放在这,第四个是最复杂的。好,第三个叫get。叫SMT啊RMd.get。Column name。和。RMd.get。看看行吗,同学们。第二个错误是什么来着?还记得不?啊不是等第二错误是什么来着,我我突然我一下让我短这个脑子短路了。啊,不是吧。不是长虫是,是上树吗?那我那我就暂时我先记三个吧,行吗?这个这个习惯不大好啊,我应该我我有我本来有信心四个我能记得住的啊,这个这个我这个搞记不住了。
30:08
就这么地吧啊,然后最后一个是最麻烦的,最后一个就是我们下午再说行吗?同学们,但是不管怎么说,不管怎么说,咱们现在登录验证已经跳过去了。对吧,我们回到user control里面去,我们登录验证在这一步。登录验证咱们已经跳过去,然后下面我们有两个大步骤,第一个步骤,加载左侧的好友列表。第二步骤,解决右边的日志列表是吧,同学们,那么现在好友列表感觉也过去了,但其实没有过去啊,好友列表现在我们仅仅是不报错,但实际上这个好友列表里面只有ID,听好了只有ID,没有昵称。而我们左侧显示的时候,是不是要显示昵称和头像啊。啊,要显示头像,那你没有头像肯定不行啊,你光有ID是不行的,所以呢,这一步感觉错误异常是解决了,但是还没有达到我们的要求。啊,然后在这一步的时候,他报错了,报到咱们第四个错误。
31:04
把他认错。大家可以先去把这个错误看看为啥会报这个错误。啊,可以先去看一看,咱们下午的时候再来分析,这个错误还是和我们的best有关。OK。好,我们暂时就先说这么多啊。
我来说两句