00:00
一个登录的校验确定之后,那么接下来呢,就要开发下一步了啊,这个要跳转的主页面了,它跳转主页面的逻辑是这样的啊呃,第一步先请求log in,然后呢,响应回来了一个啊,这个result对象呢,转成的一个杰森啊,里面包含了code message data,还有这个OK这样一个属性,其中有一个比较重要就是这个token,那这个token呢,是用户的ID,还有用户类型加上生效时间生成的一个秘文。呃,下一步呢,它会自动的发送一个叫做get info的一个请求,向get info发送一个请求,然后把这个token这个密文呢,呃,以请求它的形式发送给后端,后端在响应回数据的时候,响应的是一个什么数据呢?你看这个格式code message data啊和OK,哎,这个也是一个result对象,在这个result对象之中啊,这个data里面有一个user type的一个信息,在这有个user type信息,还有一个当前登录的用户信息。那这个user APP这个一就代表用户的类型,前端呢,在这个判断呃处理哪这个登录之后跳转到哪些页面的时候呢,也是根据这个用户类型来进行判断的,同时这块还有个user,这个user里面呢,后面在进行密码件的时候呢,可能这个就要用得上了啊呃,响应回来的是一个,呃,这个token啊,这个不是像后台提交了一个密文嘛,密文里面不是有用户的ID吗?那接下来呢,就根据这个ID来去找用户,找到对应的用户之后呢,把这个用户啊发放到这个data里面,转成杰之后响应个浏览器啊,或者响给我们的这个前端,那前端呢就给我们做动态判断了,总之要从这块拿信息转成这样的格式之后,再把这个格式呢发给浏览器就OK了,也也是因为这个用户的这个类型不同,我们查的表格它也是不一样的,那好接下来咱们就把这个get音符这个方法给大家写一下哈。
01:44
好,打开咱们的,嗯,这个麦智慧校园这个系统,呃,看一看他请求的应试路径是什么啊。在这呢,是这个get info目前还找不到啊,这是一个404的一个异常是吧?哎,嗯,System s Ms system这个下面有一个叫做get info的一个呃处理器,呃处理器里面来看看请求中的数据是什么啊,请求的数据哈,诶没带过去啊,在在在在这啊在这啊,他带了一个token,嗯,响应的数据呢,这个这是这是谁呢?这是Tom cat给我们相应的啊,这个是这个是呃,这个一个note found的一个信息啊,当咱们自己想象完之后呢,这个响应信息的格式呢,它就会变化了啊。
02:22
找到system controller SMS system下面嗯,再来一个方法,再来一个GA public,发挥类型为result。哎,怎么不提示呢?哎呀,Result啊,Get info啊,啊,这个BY什么呢?By token,哎,这个发火呢,不用呃特殊的去注意哈,来一个请求的应收路径,这个请求的方式是什么?哎,咱们看一看他请求的方式是一个啊这个看看啊。诶,看看原始头。也想一口啊。请求的方式是一个get请求,那好,那这块呢,咱就限制它一下啊,这是一个get mapping,嗯,请求的路径在下面写成一个斜线get info啊接下来要接收这个,诶,Or at,接收这个请求头,嗯,接收这个token请求头,那怎么接收呢?嗯,以string的形式来进行接收啊,那个string token,诶,但是直接写这个参数是不行的,哎,需要呢,在前面加上一个叫做呃,At request request header。
03:29
你看这个写上other request head之后呢,才是从请求头,请求头中去获得什么,获得信息,往这个参数上放请求,请求头的名字叫ton啊,Ton这个不要写错啊,那接下来就要进行验证了,验证呢,最终咱们要return一个信息啊,这个return一个对象,那这块呢,咱们还是用这个对象,哎,调它的一个快速构建的一个方法,呃,调build的方法也行,或者是嗯,调这个什么呢?调他的这个什么,先先调个OK吧,先调个OK,省得他报错啊,先调这个OK方法给我们快速构建,先不设参数,最以起把这个程序呢,先别爆红啊。
04:04
在这的逻辑是干什么?拿到token之后,先验证一下这个token它有没有过期啊,因为有可能它不是第一次啊,这个有可能已经登录过了啊,在一天之内呢,反复的进入这个页面,就可以不跳过这个登录页,所以它有可能在进入这个页面的时候呢,它是先呃调这个token,调这个get音符来先校验一下,有可能呢,这个token它已经过期了,所以得校验一下token过不过期,那怎么校验token过不过期呢?GW gwt help里面有一个方法叫做a expation,哎,把这个token给它往这一放,如果过期了,它就是一返回一个什么,返回一个true。那判断一下expiration,嗯,这个点if如果过期了,那就要想一个信息了,直接在这return一个对象,嗯,Return一个对象,呃,还是用result的,这个叫做快速构建方法,用这个build的方法吧。呃,数据呢,什么都不用放,但是呢,想的这个,呃,响应的这个叫做状态码呢,呃,通过这个枚举类来找一下result,呃,Code里边有个叫做token errorr的一个东西,哎,你看这个叫什么token无效,就什么token已经过期了是吧?哎,这个提示就是约定好的。
05:09
前面这个数据呢,不放了,就放一个not就OK了啊好,那如果没果,如果过期了要做这样处理,如果没过期,下面要干嘛呢?下面就要从token中解析出用户名啊来从这个token中。投框中解析出什么呢?解析出这个用户的ID诶和用户的类型,用户的类型呃,怎么解析呢?还是用这个GWT,呃,G wt helper,呃,它有一个方法叫做get user ID,诶把这个什么呢?把这个token再给它传过去,诶他就可以继续的给我们进行解析了啊,它会给我们解析出来一个浪类型的一个UID啊然后再来,嗯,再通过这个gwt helper,这w helper再去调它的这个叫做呃get什么呢?Get user type,再把这个ton再给它传过去,它就给我们解析出来了这个,诶用户的类型,那当然了,要根据用户类型的不同,拿到这个ucd之后呢,去不同的表格里面去查,诶,呃,接下来那就要进行判断用户的这个类型了,是吧?
06:18
来,Switch里面放这个user type。如果这个type为一,那就说明他是管理员,那我就要进行管理员的这个查询操作,然后往这个result箱里面放数据哈,Break啊,BB2K break一下啊,CTRLK1准备好了,还得有K2和K3,哎,K2K三都写一下啊。三啊,那么A如果说当前用户是一,那我在这块就要使用啊admin service来进行啊方法调用了哈,这个admin service呢,呃,这个我在上面已经把这个dmin service student service和teacher service呢都已经注入进来了啊,所以呢,直接用就可以了啊min service呢,调一个方法吧,调一个什么方法呢?叫做呃,Find啊或者叫做get都行啊,无所谓get adin by什么呢?By ID,哎,就是根据dmin ID呢去查找一个命用户,然后把这个user ID呢给它传过去就可以了,让他给咱们返回一个的in对象,In对象等于它这个方法没有,没关系,咱先写上,写上之后呢,后面把这些方法准备好啊,咱从这个controller往什么呢?往这个map上写啊呃,用户找到了,接下来呢,就得往一个往这个result里面放一个什么,放个数据啊,这个数据的格式长什么样?数据格式长这样看这一个data里面啊,是一个object,这个object里面有啥呢?一个是user type的值为一,再来一个user值为这样一个对象。
07:42
这个对象值是长啥样的?是长这个样子的,也就是说这个data里边还有两对键值,对啊,这是这键,这是值,这是键值值,所以还得往data上再放一个大集合,一个map集合,然后用map集合呢装多个建制,对这多个建对呢,两个键分别是user type和user,然后只分别是一和真正的那个用户啊好,那怎么往里放呢?在这块准备一个集合吧,这是来一个map,嗯,既是词砖类行就可以了啊,然后这个值呢,只写上object object,然后来一个map,哎,等于new一个link的哈西map。
08:18
在这就要往这个map集合中放数据了,Map集合中放什么数据呢?Map点,哎,Put put,第一个叫做user type,诶,大家注意啊,这个参数的名字一定要跟这个。保持一致,如果不叫这个use type的话,那可能这个就找不到了,前端就是根据这个名字来找这个数据的啊,User这个名字也必须得也得是用它啊,不能放什么admit teacher或者service这些玩意儿。好第一个是user type放的值呢,是啥呢?这块放到就是一嘛,因为你在这个CASE1下面呢,呃,这个查找额的密码,那当前的用户类型就是一个E,同时呢,再把这个user放到这个map里,map.put这块写成一个user,当前登录的用户是一个admin对象,In对象,OK,那就放下了。好,这是K1的情况下查的是额d me,那K2的情况应该查的是啥呢?K2的情况下应该查的是学生啊,为啥是学生呢?来看这啊,他如果是学生的话,那你看学生排第二位,如果这块勾选的是学生,他这个给我们提交过来的数据啊,应该也是一个,呃,这个用户二的类型啊,呃这块就得用呃不能用它了。
09:23
用什么呢?Student service点也是get student by ID啊,再把这个user ID给他传过去,User ID给他传过去,让他呢,给咱们返回一个student对象。等于它这块呢,这个user就变成就可以了啊,同样的在K3这个情况下,诶CTRLC复制一下给拿到这来,这个地方应该就是找teacher了啊,这个对象呢,也得换一下来,Teacher service.get by ID get teacher把ID立面再把再把这个U势ID呢给他传过去。
10:07
让他给咱们返回一个teacher,这个teacher。哦,忘写变名了,这个着写着急了提稍等于他啊。提示它OK,那么这块呢,就这块就写完了,在ctrller层这块呢,诶这个就搞定了,搞定之后接下来处理这里边的每一个方法,第一个就是要在这创建一个,在admin service层创建一个呃,Admin get admin by ID,还有在这个嗯student service备层也创建一个get student by ID,还有一个是teacher层啊,创建一个get teacher I I ID啊好,这个T呢,没有大写是吧?哎,给它大写一下,那回到这来这个地方呢,也是改成一个大写的OK。呃,三个接口中都创建的方法呢,咱们把这个每一个接口呢,里面对应的这个实现类来给它啊,也把这个方法它实现一下,添加这一个,添加个get,呃,Teacher by ID的一个方法啊,那这块用什么是实现呢?用这个base map来进行实现就可以了,Base map执行什么呢?执行一个叫做,诶看看这是,哎不是斯select克万啊是呃,好像是是斯select万啊,斯select万里面呢,要传条件,传什么条件呢?判断条件就是这个根据ID来进行查询,如果ID是传过来这个UCID,哎,那就OK了是吧?哎,那就写呗。呃,来一个query worker啊querywaer里面呢,这个泛型呢,可写可不写啊,可写可不写啊,来一个query raper,等于new一个query vaer,好呃,接下来呢,在这个query upper里面,Qua里面再来一个条件quary upper,添加一个查询条件EQ啊,EQ是等于的意思,这是一个等值条件啊,意思就是当ad这个值等于什么呢?等于。
11:51
防这个user nameme user ID啊,那这就是查询条件啊,在select one里面传一个这个queryer qua,当然这个queryper泛型的也可以指明啊,一个指明ADMN,诶怎么写到这来了。
12:06
嗯,咱们看一看啊,这是teacher service哦,我先写的是一个teacher这个啊get哦,我以为我写的是admit。啊,那好,那这个地方仿佛就是一个teacher啊。Teacher,当然这个范型加不加其实也都行,加上吧。好,加上啊,加上之后呢,这个select one应该就会给我们返回一个提示对象了,咱们把这个提示对象继续向上返回就可以了,或者是直接在这return它,哎也是OK的,那么这个basewaer啊,啊不是basewaer,这个是quarywaer和我的base斯maper呢,都是由呃蚂蚁be plus来哎提供的啊cor还有这个时现类,嗯呃这个东西啊,搞定了啊,那这个查询就搞定了,这个查询搞定之后呢,那这个T搞定了,还有什么呢?还有这个admin呢,是吧?来admin到它的实现类里面也要给它实现一下,添加一个呃这个方法来实现一样的代码,咱们可以把刚才代码呢给它CTRLC复制一下,呃复制完之后呢,给它粘过来就可以了啊到这个admin service I m PL里面,这个代码是上这个德型的来TRLV往这一粘,这里面就不能用teacher了,应该用什么呢?应该用a dad mindin啊,这块也是一个ad mindin,但是adin里面这个这个应该是写的列的名字,Adin里面那个表格ID也叫I。
13:24
上来看一看啊,看din这个表格来点开。嗯,看你看,哎,这个是ID,这个列名叫ID,还有student这一列呢,也叫ID啊,还有teacher这个,呃,这一列呢,也叫ID,哎,所以这都没问题啊,只要把这个泛型给它一改,这个呢,就会自动根据这个泛型找表格了啊,当然这个其实不用去改它也行啊,先写好吧,来回到呃,回到这来还有谁没写呢?还有这个呃顿没写呢,来,来到它的实现类里面。把这个方法来给它增加一下,诶手腕多上来。
14:02
嗯,还是把这个来给它CTRLV站这个范型的student student。嗯,OK,搞定了,呃,接下来呢,就可以进行测试了,看看这个方法呢,有没有什么问题啊,有问题调一调,没有问题那就直接就OK了啊嗯,重新发布一下吧,在这重新发布一下。重新发布完事之后呢,打开呃,咱们的这个智慧校园管理系统,哎,这咱们这个是9001是吧?嗯,这个应该重新进入了,那就写个9001,应该后台应该已经启动完毕了啊,那已经启动完毕了,启动完毕之后呢,重新进入这个页面。Dindin来一个NPV5 NPV5,嗯,先以管理员身份登录来走。诶,看一看报了什么错案,他竟然又回来了,接回来之后呢,看一看这个get info也是一个200响,要200之后呢,他想的数据是什么?哦,这个竟然没有data,没有data的话呢,他就不知道啊,这个当前登录的用户是谁,也就不知道往哪个页面跳,所以他就又回来了,那为什么不知道呢?嗯,应该就是在CTRL的层储代码有问题啊,咱确实查出来的这个map,这数据都放map里了,这个map并没有返回啊,还得把这个map放到这个result,这个OK所返回的这个result对象里面去,对吧?再把这个map再往这一放就OK了,这个时候这个result对象用这个OK构建的result对象才包含了哎上面这些值,也就是才包含了这些信息啊。
15:33
啊来重新再来冲泡重启一下。好,重启成功啊,重启成功之后呢,前端这块应该是不用刷新的,这块得改一下,验证码得改一下,这个是BQ6B BQ6啊B来走。登录OK成功了,成功之后我们发现它就跳转到这个页面了啊跳转进入这个页面之后呢,这个小图标,这个小图标这个是我自己改的啊,这个小图标怎么才能让它生效呢?是这样才能让它生效呢?啊一会儿再嗯一会再跟大家说一下啊大家那个小图标这块应该是呃有问题的啊呃,这是管理员登录,那接下来咱们换一个示范登录换一个呃这个讲呃这个教师,呃登录吧,教师的号呢,在这找一个嗯,Teacher。
16:21
T这块有一个这个小张啊,小张的密码长这个都行,这个密码就是123456啊,就是上面这个123456,那进来试一试啊小张。小张啊,密码是来123456,验证码KXPYKXPY登录身份是一个教师来搜啊,诶不保存啊,呃看这个信息呢,还这你看目前登录的就是小张了啊,这个小张登录进进来之后呢,他这个页面是长这样子的啊,这个左边这个列表呢,现在是这么多啊,这些怎么跟管理员的这个看到的这个列表呢,这个可选的功能一样呢,这个一样的原因是啥呢?跟咱们这个后台controltr这个有关,你看啊,咱们这把这个user type都设置为一了,也就是说当时一个teacher的身份登录的时候呢,用户类型也设置为一了,如果设置为一的话呢,就告诉前端当前登录的用户是一啦,他他会根据这个一是别于管理员,就把管理员所能看到的所有列表全都给咱们展现出来了,所以咱后端这个代码还有点小问题啊,这个数据类型这块没改呢,这块应该改成一个二,诶,这块改成一个三,呃,这块呢,也就通过它来验证了,确实是这个user tap的不同啊,在这个页面展示的这个项目啊,就不同啊,再来重新发布一下,重。
17:34
进启动一下。嗯,重启之后还是来退出登录,退出登录之后呢,重新用我这个小张啊,密码123456啊,验证码DP5G。DP5G啊,登录身份以教师身份登录来揍。诶看这回会发现这个选项呢,就会少了很多,就代表了他能管理的事情呢,少了很多啊嗯,接下来用一个学生的身份登录,用学生身份登录的话呢,他能管理的页面可能就更少了,再找一个学生的信息啊,找一个学生的,呃,假设这个是什么,这是张小明啊,这个密码也是123456啊。
18:19
再来一个张晓明啊,密码也是一个。123456SST5。嗯,然后登录的身份使学生来做啊,你看这个时候就少了一个,他就只能看到学生管理和个人信息管理了,这个叫教师管理的信息呢,就没有了啊这是呃,Get info这个方法呢就实现了,实现之后呢,大家一开始进入这个系统,你这个图标可能会有问题,呃,这个图标问题在哪呢?原因就是它这个图标啊,来看一看,它是请求了谁呢。往下找啊,这有一个get info get info之后是在这块来着的,这个图标请求的是是是是是。
19:03
嗯,什么位置发送的,这还不是很好找啊,你请求太多了,来重新刷新一下页面吧。F5刷新一下。嗯,F5刷新之后,这块有一个default,诶这呢,哎,就是这个东西,呃,当登录成功之后,它会请求一个这样一个路径叫default.copy BG,这是为啥呢?这是当前登录用户的这个头像的这个图标,这个图标呢是放到什么位置,点开看一看就知道了,看看他这个请求。小气头,嗯,请求的是啥呢?呃,这请求的是这个玩意是一个upload default里面有个勾PG这样的一个文件啊,那呃,大家这个项目中目前应该是upload里面没有DEF,点勾这个文件没有怎么办呢?大家随便找一个图片,随便找个图片之后放哪呢?放到啊,放到这不有一个public目录吗?往这个upload里面放一个这个名字叫做DEFa.copy图片就OK了,你可以改成自己的,哎,美丽的照片是吧,好看的照片,但是只放这还不行,只放这重启项目之后啊,这个文件它经过编译之后,项目经过编译之后,它应该出现在这里,呃,Public upload应该会出现在这里。
20:12
哎,注意这是两层目录哈,Public目录下面有一个upload的目录啊,那么呃,出现在这的话呢,才能真正访问,因为实际项目运行的时候呢,请求的就是这些资源,而不是说你原代码里面这些资源,如果说呃,你放完文件之后,你重新发布项目,这块没有,这块没有怎么办呢?你可以手动的在这块,把这个在这块也创建个同级别的目录,先创建public,再public里面再创建个upload目录,然后把这个文件呢,手动给它复制过来也行,或者是你把idea给它关了,重新启动一下,重新启动之后呢,它会把这个项目进行重新编译,或者是用ma在这儿来,呃,用ma的这个生命周期。什么周期,先把这项目的可定掉,可令掉之后呢,再进来,再来重新编译,那这个地方应该就会重新生成了啊,所以这个小问题啊,只要把这个小图片往这一放啊,那这个嗯,这个头像这个问题就可以给你解决,想放什么图片大家自己选择就OK了啊,那这个get info啊,这个跳转到主页,根据用户的不同类型跳整的主页,这个功能咱们就完成了。
我来说两句