00:00
然后呢,下边写controller,下边写controller,在用户的control边加一个方法,然后呢,表示处理登录请求的,所以我们在用户的C边加方法,对在用户在这里边加一个方法,那这个方法呢就写吧,根据我们以前学的是吧ctrler层的方法哈布雷克返问值是返问什么类型的。访问什么类型的?对,访问什么类型,你看你设计好了,将来我们要通过这个返回值,是不是访问一个杰森呀,访问一个杰森咋访问啊。对,放回放回芥菜。对,只返回数据,是不是把这些数据分成一个加va对象里边1RETURN,前面加个方的包,是不是自动返回阶字符串了,对,那我所以说大看我们将来这个方法要返回一个加化对象,返回一个什么样的加固对象。
01:08
四可不可以?对对,你得自己转接算呢是吧,那转成什么什么是那返回什么样的这个对象,对U对象,那ul对象有有这个属性吗。有这属性吗?你要什么,将来要通过一个Java对象转成这个阶层,那个Java对象里边,那个Java类里边是不是也得有这俩属性,也是这va属性,那现在我们有这有这些Java对象吗?没有,将来我们会自己创建一个Java类,专门封装这种返回,这种要返回接线的这些数据的。然后呢,我访问那个对象就行,那个对象现在什么,现在我们现在还没创建呢,是吧,我说但是没创建的话,我们现在返回这么一个阶层字符串,封成一个加va形,万一以后我再返回的数据更多了呢,那可能还得又一个加va就形。
02:06
那又返回一个更多的数据呢,又返回一个加值类象,所以这个地方为了通用大卡,这个访问值类型应该返回是什么,对object是什么。敖布杰格,你不管给我分狂返回什么加构对象都行,大家明白这个意思吧,对,将来你不管返回什么样的加构对象都可以,所以我就定义object的类行,你将来想返回什么,杰森把你的数据服装成什么架构对象就行,我这个地方定义成object,你都能返回。这样的代码更通用,大家明白吧,知道你要说我就定义好一个叫map部,或者是某一个加va对象,万一我多访问一个数据,我访问别的对象了,你这个地方是不是就得改了,改了,所以我们这个代码为了更通用,一般来讲我们要想让C方法返回阶字符串都是统一定义成OB杰森。
03:00
将来你处理完请求之后,想返回什么阶层,你直接往任何一个加构对象里边疯装数据就行了,将来你可以返回任意的加构对象,那有老说我返回任意的加构,假如访回一个student的对象,或者访问某一个加构对象,那它生成杰字符串的时候,岂不是按照object都生成了,它不是你实际访问的什么对象,他就把你那个针对你那个对象转成相应的杰字符串。而不是说把整个object转成尖子,大家明白这个意思吧,对,就这意思,其实这就是什么,这就多态是吧,这多态返回值可以定成负类型的,这个什么返回值类型,然后呢,真正转接阵的时候按照谁啊对子类型的,你那个子类是什么,他就按哪个对象转接阵,周超。就知道吗?它并不是说你定上object杰,它把object杰转接,它不是账的,知道吧,你是什么它就是什么,所以我们这个东方就可以了,只要返回杰森字,杰森组格,全部都是老杰,好,下边方法名,方法名呢,建鸣之意了,我这个地方就写叫老音啊,就叫老音了,或者叫杜劳音也行,建明任意分钟知道吧,所以我们这个地方就可以了,然后呢,这样的话,这个方法就确定了,那么们说这个是CTRL层的方法,将来他要处理来自客户的请求。
04:23
那处理来自客方的什么请求,那得给他分配一个ul,那分配ul用request map,那在这里边给他分配一个ul。这个UR我们说理论上随便写,但是实际开发的时候绝对不能随便写,那它的这个URL分配的这个原则应该是什么呢?对,和他什么这个方法将来要处理的资源路径保持一致,他处理的资源路径是谁?就是他将来会做出响应信息,那个响应信息会返回到某一个页面里边,那个页面资源路径就给给那个页面的资源路径保持一致就行了。
05:07
知道吧,那他将来处理完了之后,这个响应信息返回到哪个页面里边。哪个页面里边对一点登录是不是将来什么就发请求了,在登录这发请求的响应信息是不是给到给到登录页面了,给到登录页面,给到登录登录页面再进一步的判断跳朗的,所以总之这个响应直接就访问到这个登录页面去了,所以说这个URL要和登录页面的URLU那个路径保持一致,登录页面的资源路径在哪呢?对,那就来看看这个来看看吧,对。Page settings权限user是不是给他的资源路径保持一致,他的资源路线哪?从视图解一切往下找,找谁啊,Setting全线有所是不是这样子,是所以我们这个地方来这个地方这个斜杠就代表那个硬用的根,或者就代表视图解析器那个地方,对,然后呢,Setting字下边叫什么?全限下边呢对,User下边呢对下边资源的名称了,路径给它保持一致,资源的名称和方法名一样。
06:25
对,知道吗?这是我们说的这个UR,这个UR现在现在以后让你自己开发,知道咋命名了吗?知道怎么命名了吗?看谁啊,看这个方法将来响应信息返回到哪个页面去。返回到哪个页面,那个页面的资源路径就是跟他资源路径一样,方法这个资源的名称和这个方法名一样,就这意思。那你说这个响应信息给到谁,一般来讲是这样的,这个响应信息给到谁呀,知道吗?谁发的请求给到谁。我们这个的从登录页面发就行,就访问登录页面就一般是这样子啊,就就就这是我们特殊情况,我后边再跟大家说知道吧。
07:06
这是我们说到这儿,所以那啥这个路径,但你要理解这些的话,你要理解你写的时候不能随便写,说他处理完请求之后,响应信息回到哪个页面,那个页面的租上镜就给它做,跟这个U匙一样好,这是我们说的这然后呢大看那这个方法将来返回,返回要返回阶线字串,那这个地方是不是得加一个respond body啊对,加一个respond body,然后呢,这个地方来一个。叫response body你知道,然后呢,当然当然这个response body你也可以写到外边去,写到这个地方也一样,道理一样啊,道理一样就写法不一样而已,也行,知道吧,好,那在这个方法里边。要定义行参接收前台常用参数知道吗?那定义什么样的行参?咱们已经设计好了这三个型态了,账号密码是否记录密码,那就定义行参了,那我们这些全部都是什么?对,都是字符串来接图,一个是账号log in act,还有谁呢?密码叫什么?Log in p WD,对,还有一个是否记录密码叫is remember p WD啊。
08:15
对,将来我传的时候好有哪一个。嗯哪嗯哪一个了,什么意思。就不管类型是什么,我们都是统一用字符串接收,因为我们数据库里边设计全部都字符串啊,哪怕有日期什么,其他类型全部都一种么字符串接收,大家明白这意思吧,就这就这样就行了,好,这是我们说的这样啊,这是我们参数就接收到,参数接收到了,现在我们已经来到这一步了。通过URL接入到请求了,参数通过行参也获取到了,下边怎么办呢?对封装参数是吧,把这参数封装起了,根据我们的设计要封装这个map里边了啊封装参数封装传,那根据我们的设计封装map,那我这个地方要创建一个map了,然后呢,这个地方来一个object或map,然后呢,这个地方来一个map,等于六一个对哈奇map这样就行了,这样了,好,这是我章,那把你的参数放里边就行了,那就放里边打放。
09:28
对,Good,这咱们以前学的那些语法都用上了是吧,一个是叫log in是吧,对艾账号这是这个key,我就叫他了,然后呢,把那个值写到这,接收到这个上面,这个值明白吧,同样还有个密码也放里边来一个后叫什么log in p WD,我这个K你K,你随便骑我这个就叫掉他了,让log in p WD这样的话,房主。那个a remember pwd还需要往哪放吗?
10:04
这个参数还需要放吗?还需要放吗?对,你别猜是吧,你得能说出来原因是吧,放不放?对,你你为啥封封装参数。你那能想到为啥封装参数,就因为这参数要传给serve人,传给外边传so语句传的时候好传,是不是它封装吗?后边这个参数需要传吗?对,不需要,因为三鱼不需要,不需要,不需要传,那是不是就不用封装了,对不用封装,这个不用封装了,这样的话我们就封装好了,封装好之后大家这个地方我给大家强调一点,这些K按理说你随便写,但是你起什么,将来在数据库搜QL语句里边用的时候,你得叫什么。所以这里边的这些参数的名字和封装的时候,这些K的名字要保持一致,大家明白这个意思吧,对,这样大家要知道这些,嗯,好,这样的话来看,我们已经封装好参数了,封装好参数现在已经写到哪了呢?写到这一步了,第五步写完了,第五步写完了,下步干什么?第六步了,第六步干什么?
11:13
调用service方法,然后呢去查询用户去了,所以我们第六步来调用都是根据设计来的,知道吗?然后调用service层方法,然后呢去查询用户,查询用户那调用service的方法。是不是得拿到service层,Service层的对象了,Service对象咋拿对是不是还得注入进来,对注入进了来定一个service层的类user service,然后呢,这个地方user service这个地方注入进来,我们说用resource也行,我们这个地方就用auto好,当然我们这一个功能实际上不止一种方式,我们凹,然后呢来调它直接调过来就行了,那就调吧,点二调它的哪一个方法,刚刚写的那一方法,对,根据账号密码去查询用户,然后把这个参数传过去,哪一个参数对刚刚封装好这卖。
12:14
然后呢,他得到一个返回值,这个访问值就有个用户的实际对象知。这样的话,再看我说这一步我们做完了,做完之后现在这个流程图我们已经来到哪了?来到这一步了,得到这个userr了,得到user下一步怎么办?根据么查询的结果来生成相应信去,这是他的职责吗?知道吗?那如何根据它的查询结果生成详细信息,就是咱们给大家分析的,对,先看一看,查出来跟查出。没查出来,那直接登录失败了,查出来了还得进一步判断是不是过期了,是不是状态被锁定了,是不是IP受云受限了,是不是这样的,对这样任何一个出问题都是登录失败的,只有全部都是合法的才登录成功,那来判断吧,在这时来判断这个地方来根据查询结果,查询结果,然后呢,生成响应信息,生成响应信息啊,就这样生成这个响应信息。
13:14
那如何判断,如何根据查询结果生成详细,那就一个一个判断了,首先来看这个用户查出来没有if判断一下吧,如果user。对,知道吗?对,我说你瞎判他不等也行,你先帮他等也行,我们就先判他这个吧,啊如果说等于,那说明什么。对,没查出来,没查出来说明什么。登录失败了,好吧,登录失败的原因是什么?对,用户名或密码错误,或者他俩都错了知道吧,所以这种情况下,我先把这个逻辑写到这儿,一会儿再生成详细信息,这个登录失败,登录失败说明原因就是用户名或密码错误,密码错误小赵吗。
14:02
这是我说如果等于那艾艾说明什么,查出来了是吧?查出来了说明用户没有密码没问题,是不是这样子,对数据库里边有这个账号和密码,那说明用户名密码是对的,用户密密码对了,那是不是就一定登录成功了呢?呃,不一定对,还得进一步的判断,是不是这样的,对那这样呢,然后呢,还是如果说那么呃如果说这个呃查出来查不了,还得进一步判断,进一步判断判断,然后把账号是否合法,判断账号是否合法行吗?对那进一步的判断怎么判断,在这边进一步判断。对,那那那需求说了,需求这个说的很明白了,这个地方说的吗?刚刚登录的时候看看是不是已经过期了,如果过期是不是就不让他什么,对就不让他成功了,那过期我怎么怎么判断过期不过期呢?对看法有一个那个过期时间是吧,那过期时间是不是他既然user信息已经查出来了,是不是一定在这个对象里边周末了呢?对一定在这里边呢,我是不是通过这个对象就能拿到它那过期时间了,对拿到过期时间转到对a PL time,大家看它这个字符串,你看吧,咱们所有的数据都以字符串来能往保存了。
15:32
这是一个字符串,这是它的最大过期时间,能拿到这个时间了,我怎么知道这个时间过没过期呢?现在时间格化,对对,跟当前时间是不是比一比啊对,当前时间咋取?对你有个德塔,这俩时间比一比,看谁大谁小,如果它大说明什么?它的时间大,这个过期时,它这个最大过期时间大对大就说明什么,它靠后是吧,它靠后当前时间靠前,它靠后是不是还没过期呢?对,还没,如果它小,那那说明什么?过期了是不是这个意思,这样所以说再看那这个时候,那就比较这两个时间大小就行了,比较两个时间大小大比较。
16:29
对,格式化一下是吧,那有两种方式,两个时间是不是也能也能比较大小啊对两个时间,那两个时间比较大小,那首先这个是个字符串,这个是个得。对,如果按照这么对,如果这两种方式啊,第一种方式按照时间比,怎么时间比,把这个字符串也转成得塔,这俩得塔比一比是不是样子,得塔比咋比。15.9。对,是不是data里边都有一个get time,那get time是一个long类型的,表示什么含义啊?
17:05
表示他们表示的时间距离1970年是吧,那1月1日00:00:00零毫秒是吧,所经历的一个毫秒处,这俩毫秒数一比是不是就可以了啊。然后把把在搜狗里边格式化一下。嗯,格式化,但是你取出来在Java里边比较的呀。你取出来,你得在Java里边比啊。对吧,在so里边不能比知吧,你格式化,你取出来也得用,也得也得在加va里边比,明白这意思吧,对知道,所以大家都把它转成得塔,然后取到两个两个data,两个data了,取到两个data get time比下毫秒数就行了,这是一种方式,可以啊可以你看下,你可以自己这么转一下,那把你把这个字符串啊,把这个字符串,把这个字符串转成对塔咋转。
18:00
对,Simple data form是不是这样的,到时候转到你自己转就行了,是吧,这都是大家以前学过的,我看到就不给你写了,这是第一种方式吧,第二种方式,我给你写第二种方式,第二种方式怎么把你比较两字符串就行了。对,把贝塔转成字符串,然后比较这俩字符串谁大谁小就行了,对,比较俩字符串啊,比较俩字符串带上,把它也转成最大,这你比如说他看我们举个例子,假如说这样,嗯嗯嗯,这样来个2019年,然后呢,10月20号,然后呢,这个地方假如说他也转成个日期,2020年,你说。这个地方大哥,嗯,这个九月呃十号,就简单简单就简单这么这么写啊,就这样,假如他也转成一个日日,它也转成个日期,它也转成个日期,知道吗?就就它也是个字符串,它也转成字符串,假如这俩字符串比较俩字符串的大小就行了,知道吧,俩字符转的大小就能那么代表日系的大小了。
19:04
知道吗?就是谁大,哪个字符串大,哪个日期就到了,就这个意思知道吗?诶你说老师两个字符串大小能能代表日期的大小。对等,那比较字大小咋比较对,因为比较字符大小一般逐个字符比较。对,如果是第一,它的第一个字数和它第一个字数比较,如果一样,继续它的第二个字数跟他第二字数做比较,如果一样继续往后比,知道比较一个不一样的,谁大谁就大,那明白这个意思吧,就字符状态,那这个时候有问题,有啥问题,对格式啊,你说你说假如说这样,假如上面这个字符串,上边这个日期是这种格数的日期,下边这个日期,假如我转到这这我这按照这么转。这样还能。字符串大小还能代表日期大小吗?对,不能了,不能了,那就要你打,你咋用这种方式,对我将来是吧,我不让他这么写,我只能让他,怎么所有的日期和时间都用这种格式不行,规定好日期和时间的格式只能用这种啊对,只能用这种,这样的话咱跟我说他就能保证日期的大小,字符热大小就能代表日期大小,那你说你怎么,那你说你怎么能保证。
20:21
这这些这些数据都是创建用户的时候,然后呢,用户自己输的,你怎么保证。对,到时候这样这样,到时候他输入日期的时候,不让他输干什么,做日历是吗?只能让他选,他选的年月日了,我自动能按照这种,他选的年月日,我自动按这格式给他插入到数据库里边,大家明白这意思吧,就不让他自己输,他要自己输入,他可能就随便输了,但是我不让他输,我只能让他从日历上选将来。所以它就格式就能保证了,所以大家在系统里边所有的日期和时间全部都是规定的这种格式,因为我们想让他什么格式就让什么格式,将来这些数据产生的时候都是用什么日历,不是让他自己输入的,所以我就准备什么用日期的大小来用字符串的大小来改成什么,用字符串的大小来代替热水器的大小,知道吧。
21:16
啊字用这个字符块大小代替日期大小,那这样的话,大概我要做的话,我在这样了,假如我们所有的时间都是按照这种,所有的日期都按照这种格式的。啊,所有的这些都要这种格式的,那我这样的话,那我将来我得把这个data转成这种格式的字符串了。那把这种啊,把这个这种对象转成这种格式的字符串咋装。对是不是得用么data form了,就那用了用这个了data么data form就这个,这是以前大家经常使用的SDF,又有一个叫什么对simple data form在里边是不是写上,你想让它是按照什么格式的转换在里边在格式是吧?对这里边写什么,对对这个这个然后呢,对这个呢,S是不是然然后呢,把它什么转一下,点掉哪一个方法是不是form form这样就行了,然后呢,这个地方呢,把这个NEW1DATA是不是就可以了,对new data这时候转成当前这个时间了,然后呢,这个地方来个当前时间,然后呢,No s tr这节行了,这样的话当我们就可以了,可以完了之后。
22:38
看看我把这个闹这个字符串跟这个字符串是不比一比就行了,对比一比,那它俩字符串比咋比呢。来班儿,来班儿一点。对,是不是compare compare兔对比一比就行了,那比一下吧,那不叫这假如我就让他比一比了,他点叫什么这个卡跟谁比对跟user点叫get什么X p time,给它比一比,它得到一个数值型的数据。
23:16
当大于零的时候,谁大谁小,对前面大,前面大说明什么?当前时间大,当前时间靠后是过期了,对,这个时候过期了,过期了即使账号密码正确,是不是也是登录失败,对,登录失败,登录失败,然后呢,失败的原因就是什么?对,账号已过期,账号已过期这是一种,这是一个,这是一个逻辑了,那假如他的账号密码也是对的,也没有过期,是不是就一定登录成功了呢?对,也不一定,还得进一步的判断,知道吗?二是进一步的判断,假如没有过期,还得进一步判断,判断什么呢?状态是不是被锁定了,那么那状态是不是被锁定了,我前面给大家说了,每一个用户都有一个状态,这个状态就是lock,这一是启用零是进吗?这个锁定知道吗?那就判断它这个状态值是不是零。
24:17
如果是零,那就登录失败,是不是这样的,那如何判断那个值是不是零呢?那是不是零,是不是它,它设计的时候这些什么都是字符串,都让字符串对,那叫什么对零点什么E跟他那个什么跟它那个状态值比一比,是不是这样呢?对两个字符串比较大小,然后呢,这个大小user.get叫什么lock lock如果是零,那就也是登录失败,登录失败。状态被锁定,原因就是状态被锁定,对,那假如说大哥他也没查出来了,账号密码也是对的,也没过期,状态也没有被锁定,是不是就一定登录成功了呢?对,也不是根据需求说了,看看他现在的那个IP地址,它那个IP环境,网络环境是不是安全的。
25:14
怎么安全的,就是看他的IP地址在没在这个用户常用的IP地址里边去里边。那如何判断他现在在那个网络环境所采用的那个电脑的IP地址在没在这里边,在没在他这个被允许的IP地址里边呢啊。对,包含,首先你得获取当前用户,他使用那一台电脑,他的IP地址是多少。对,怎么获取到那个IP地址。该什么变成A啦?对,你们以前学过一个是吧,哪从哪个方法,从哪个对象里边获取啊。想获取用户的IP地址?跟哪个对象获取,是request还是response?
26:02
获取用户的IP地址。从请求里边获取还是从响应里边获取,对请求肯定是从请求是吧,所以请求里边肯定带过来的,因为请求来自于客户嘛,所以客户采用的IP地址等等,客户的所有信息一定从请求带过来了。是吧,所以说呢,从请求这边,那从请求这边获取,是不是我得拿到请求对象了,拿到请求对象咋打对这个地方是不是注入进来,注入进叫HTTP叫什么serve request对,然后呢,来拿到,通过它去拿用户的IP,它里边有个方法,哪一个方法叫点改点点get叫什么叫remote ad dl对,就这个remote什么意思,那对的远程的那么叫远,翻译成中文叫远程的叫远程的IP地址叫用户的IP地址。它是一个字符串是吧,字符串,那就是看看这个字符串在没在用户的allow的IPS这个字符串里边,是不是这啊,那如何判断一个字符串在没在另一个字符串里边呢?
27:10
对,Contains吧,那就来看看用户的get IPS,这是一个字符串,然后让他判断一下调它的什么contains,然后呢,把这个地方放这边就行。如果在里边方位处。说明是合法的是吗?那我这个拦截的是不在里边的,那怎么办?对取个法是取个法,这样就行啊哪一个。啊哪哪一个,哦,对request,对,在这里边注入进来了,在这注这这这个什么spring Mac我们说他知道你有可能会用response request session。
28:00
他说他也有可能在你编程过程中写这个CTRL方法是有可能用的,他说你可以什么,他这个方法是定义的可扩展这些参数啊,你对你可以什么,对你可以这个直接住屋,进了需要的话,你可以直接住屋。发请对,现在发请求这个P用户自己的IP明白吗?哦对,是个字符串啊。明白吧,对这我就行了,那这样的话大家看一群访,我说他不在不在里边,那就是么登录是吧,即使账号密码都对,也没过期,状态也没被锁定,也是登录失败,那他的失败的原因就是对对IP了受限,这样的话我们就可以了。一个对象,他只有一个那个。因为只有一个这个。只有一个能查出来的。
29:04
啊,不是因为,因为这个这里边儿是个字符串呢,他有多个IP组成的,对他把他这个常用的IP,他家里边的IP,他办工位上的IP,甚至他经常出差的客户那个什么给他分配的AIIP都有可能什么都会,他常用的IP都会设置到这个字段里边去。这里边可以有多个IP,明白这意思吗?对,这是吗?这就看看你这个IP在不在里边。好,这是我们这容,那假如大看有一个用户账号密码也是对的,也没过期,也没被锁定,IP也没受限,也是安全的,这个时候呢,登录成功了,会二次登录成功了,这个时候登录成功,登录成功知道吗?好,这是我们这个逻辑,这个整个根据查询结果生成响应信息的这个逻辑。这个逻辑我们就说就逻辑就写好了,下边我们要根据这个逻辑生成详细信息了。
30:02
那生成响应信息,什么样的响应信息就这么一个阶层啊。那我要生成这个杰森,根据我们以前讲的,我要把这个杰森里边这些数据都放到一个Java对象里边,然后1RETURN,前面加上瑞兹邦子包子了,自动生成这么一个阶算。那现在我问你了,我要生成这样的阶层字符串,我需要把这些数据分成一个什么样的架构就行了吧?对,换句话来说,什么样的Java对象一他人能够自动转成这种阶层?啊。那我给你提示一下卖可不可以。是不是可以了,对map可以,然后把它做,把它做key,让他或者他做value,他做他做value是不是这样的也可以,但是呢,这个map一般来讲大家要慎用,就map要慎用,现在很多这种编程中,很多这种这个公司都禁慎慎用map,甚都禁用map了,就为什么用map效率低,Map效率太低了,这是有map map底层结构来实上这个底层的数据结构来决定了。
31:17
Map部底层数据结构是用链表和数组结合在一起来实现,共同实现map部,然后我们以前学集合的时候,老师给大家讲过,大家学list的时候学过一个a list,还有一个link list是吧?对a list底层是用数组实验的是吧,Link list的时候链表实验的知道吧,啊所以说它俩都有应用场景的数组是吧?遍历的时候变好遍历是不是样呢?所以放到A的link的链表呢,变历不好便历,但是呢,对对,增加删除数据好是好,增加删除是不是这样的,在这儿这是,所以说大概我们说根据自己的应用场景选一个是吧,这个map部呢,底层既有数组又有链表。
32:01
所以它的效率就特别低了。所以它比你操作对象效率要低,底层又得找数组下,通过下标找数组下,这个下标找数组,然后呢,找到某一个什么这个数组之后呢,数组找到某个元素之后,这个元素上面,假如说这么在这个下标,同样的这个一些元素还得去找链表上面去找相应的固定那特有的那个特定的那个元素,所以它底层你知道它底层特别什么特效,那么特别复杂,效率特别低就行了,现在很多公司,特别是这些大公司甚至都嘛都禁用麦普,不准用麦。那我们这个端大不用麦用什么用什么呢?还有什么样的对象能生成这么一个阶层。Java对象可不可以啊,Java实体的对象可不可以啊,对,可以,但是你这个实体的对象你得有这俩属性,是不是这道吗?那我们现在实体对象没有,没有怎么办呢?对,写一个创建一个实体类对象,这个实体类对象将来专门用来什么?返回杰S自符串,把那些数据封上这个实体对象知道吧,所以下边我们就准备来创建一个实体对象了,那这个实体对象我就直接创建了,然后呢,这个地方,那创建的话,这个实体对象以后所有的ctrler,不管是什么业务的controller返回接层都上都封上这个加固的项目。
33:22
这个实体的对象里边,那你问我这个实体对象写到哪个包里边呢?塞的家行吗?对,那万一我以后呢,我和奔驰这边也需要呢。对放哪放他下边是吧,放他下边那知吧,放他下边那种功能,他下边是跟那些什么首页功能使用的是吧,所以大看我们一般一般什么习惯上都是这跨跨模块使用的,跨模块使用类一般创建一个公共的一个包,那你到公司软就看见了吧,在CRM下面再创建公共的包,所有跨模块使用了好多模块都使用的类都放到公共的包里边,我们这块叫有有个这个包叫comments公共的包,然后呢,在这个公共的包下边,将来有很多公能类都放到这里边,那都放到这里边,那有将来有几十个。
34:17
公共的类都放在这边,也不太好,也不太好维护,那怎办?对公共的类也有什么,也有分类的是吧,那不同的类让他放到这里,公共的实体类都放到这里,在里边再建一个字包,公共的实体类都放到部门这里边知道吧。这是我们还占啊,当然以后还有公共的工具类,还有公共的常量类等等,都会什么在common下边再创建自包,这些包又不收费,懂吧,你知道创建越好以后什么类多了你越好维护,知道吧?所以这个地方,那我在这边再创建一个类,这个类就就一个这个类类名你随便写了键名之意,我这个地方就叫做将来为了返回返回响应信息的这个类,我就叫re return or接口知道吧。
35:06
好,然后呢,再看这是我这个公共的类,那专门用来返回阶点字符串的,知道了,那在这个类里边,它是实体类,要定义相应的属性了,那电源属性首先有一个属性叫什么,对Q的,我这个都都以字符串的形式,都以字符串的这种这个类型来定义了,为什么?因为字符串在各个语言里边都是通用的,将来他这些字符串要返回给杰森字符要返回给客户端的,那客户端字符串也是大家都是通用的,所以都已都定义成字符串就行的就行了。好,这是我说下边还有一个什么对提示信息的提示,你叫message是吧,Message叫提示信息,然后呢,这个是处理成功或失败的标记,这是处理成功或者失败的标记,标记啊,当然你也可以定义将来一就是成功知道吗?它的值如果是一就成功,零就是失败,知道吗?啊,零是失败。
36:05
知道吧,这是提示信息,提示信息知道吧,其实在我们这种定义这俩属性就够用了,但有的时候我们除了什么要告诉前台成功或失败,还有一个提示信息之外,有的时候我们还需要什么往前台再返回一下别的信息,跟接层组者一起往回返。所以说我们有的时候什么通常在额外再定义一个属性,这个属性将来专门往前台再返回别的一些什么有用的一些数据的,那这个数据再定义属性,这个属性定义成什么类型呢。返回别的数据,返回别的什么类型的数据,对熬不杰克对,所以大家现在是吧,慢慢的是吧,就能接受这些编程思想,就你要不确定的话,就是object正好我更灵活,以后想返回什么类型的数据都可以,那这个属性名,那你随便写了,我这个方就叫return,叫return,然后呢,Data知道吧,然后呢,这个是返回到什么其他数据啊,其他数据吧,其他数据知道吧,好,那它是实体类,那实体类的属性都给它加上GET3的时候知道吧。
37:15
好,这样的话来看我这个实体类,这个类我就写好了,定义好,定义好之后,下边我就根据这些什么登录成功或失败的这种知吗这个逻辑,然后把这些要返回到这些数据,然后呢,都封装这个对象里边了,那封装这个对象里边,我在上边这样对你一个对象,那我这个地方在这么扭一个对象了,然后呢,这个地方在这儿溜吧,在这个地方溜一个对象。创建它的一个对象,我了,你有一个return object,杰克知道,当然现在它这个空对象里边有数据,里边有什么数据,你看看你的结果了。首先大家看,如果说U侧等于none,那这个是登录失败,登录失败往里边封装数据,那封装什么?首先封装Q的可了,得一级对零是,然后呢,继续那零的话,那下边得有什么对提示信息对失败的原因是啥?对用没有密码错误知道吗?这是一个下边继续来。
38:19
那如果说他什么,他不等于呢,不等他进到这里边,进到这里边的话,我们再来判断,如果说已经过期了,是不是也是失败了是吧,失败的原因呢,对账号一过期就知了。然后呢,同样的道理,如果状态被锁定了,那就进入战里边,进入到这里边儿,那么还是失败,失败的原因,状态被锁定啊。然后呢,那如果说什么IP受限,那就进入到这里边,进入这边那就直应他还是失败,失败的原因,IP受限对。然后如果进入到这里边呢,那就登录成功了,对登录成功了,那就来个return object.set叫什么code扣等于几对一正。
39:09
这样的话,看看我们这些逻辑,这些不管成功还是失败数据全部都封装这个对象封装完了之后,是不是把这个对象返回就行了,对放去直接什么return,直接return,对前面加上什么response包,自动转成我们所需要的阶层。这样的话,这个CTRLL就行了。这是我们这个CTRL。CTRL这写完了,下边我们这道来看后台就写完了是吧,这样那后台写完了,下边就前台了,下我们来写前台了,前台我们说他的职责也比较也比较什么比较比较明确了,前台其实大家你从这个流程上,你就看了前台去做两件事,第一件事对这个什么发请求,第二件事对接收响应信息处理响应。知道吗?
40:00
好下边我们来写前台,好下边来写这个前台这个代码,那前台这个代码,这前台也比较多了,比较多的话。比较多了,休息一会儿,休息一会儿吧,对,休息一会儿,要不然时间太长了,休息一会儿,休息一会儿赶紧回来吗?十分钟吧,要不然写完了。
我来说两句