00:01
好,我们来上课了啊,同学们,呃,那我们还是先简单回顾一下昨天讲的东西啊。嗯,昨天的话我们主要就是。呃,讲的是这个DWS层的这个应用了,对吧,分了两部分啊,第一部分的话是呃,采用这个BI工具啊,就是我们的K班的啊,然后呢,去搭建了一下这个可视化啊,就做了几个效果啊。好,然后第二部分呢,我们讲的是这个数据接口啊,不过这个现在的话,这个还没有讲啊,我们是先讲了这个。呃,Wbo的这个入门啊,就给大家去介绍一些这个Java web这个开发的一些这个知识。对吧。行,呃,这个BI这个搭建可视化的话,嗯,这个没什么难度哈。是吧,这没什么难度啊,就是你先把你这个数据源给它确定好啊,确定好以后呢,呃,你找到这个对应的这个BI工具啊,然后呢,呃,在它里面你就去配置这个各种图形就行了啊,那你在这个配不同图形的时候呢,你就看一下他希望你呃这个配哪些东西,比如说你选什么字段。
01:03
是吧,然后呢,应该怎么去配啊,这个就是在这个每个BI工具里面,嗯,看似不一样啊,但其实这个都差不多。是吧,啊把该指定的这个字段呢,给他指定一下啊,该聚合的字段的聚合一下,那之后的话自动就能什么把这个数据给你调出来,然后呢,把这个效果给你展示出来。对吧,这个就没什么难度啊好,我们配了两个,一个是呃,日活相关的啊,我们配了一个柱状图啊,然后呢,还配了一个这个订单相关的啊,我们配的是那个。呃,叫那个什么地图对吧啊热力地图啊行,然后配好以后的话,最后我们这个简单去说了一下啊,我们是可以把它什么做成一个大屏的啊,做成一个大屏啊,不过现在的话,我们做的那个相对呃没有太好看哈,就是功能是有啊,但是呢,不是那么好看。能听懂吧,啊,这个好看不好看我们就暂时先不说了啊,就是把这个功能给它做出来啊,而且的话,我们最后配好的效果呢,也能够这个分享出去啊,就是你可以。
02:00
把它嵌入到一个页面中。啊,然后把这个页面呢,给他这个,呃,放到比如说我们的一些办公系统中啊,或者说我们一些这个比较查看的这个设备里面啊,将来这个甲方也好,或者这个领导也好,他们想去看的话呢,呃,非常方便的就可以查看啊。像我们的话,我们知道啊,那我打开这个kanner,然后呢,访问个地址是吧,然后打开kanner,然后呢就能够看得到了,但他们肯定不懂这些。是不是,那不懂的话呢,你就要什么通过一个他们能够操作的方式,然后让他们看到这个结果啊,所以说我们可以什么把它这个分享出去啊,放到一个要什么页面中,对吧,那你放到一个页面中了,那你这个页面你可以什么嵌入到各种办公系统中啊,这个是非常方便的。好吧,行啊,这个我就不多说了啊,大家这个自己去配一配,应该没啥问题啊,只要你的数据都搞定了,那你配这个东西肯定没啥问题啊。好,那我们重点来说一下这个第二章啊。呃,第二章的话呢,因为我们要去写数据接口啊,所以说我们必须得去掌握一些,嗯,就是Java web的一个开发啊,好,那我们讲一下这个入门啊,就是告诉大家呢,这个怎么去写啊,呃,首先呢,我们先介绍了一些概念啊,第一个就是这个外部服务。
03:11
啊,外部服务啊呃,这个整体来讲啊,就是你客户端的发起一次请求,然后呢,我在后台呢去做一个处理,处理完成以后呢,再把结果呢给你做一个响应啊整体来讲就是这么一个交互的一个过程,对吧,昨天我们这个画了个图啊,可以看一下。好打开啊看一下。就这个图是吧,呃,上面那个啊这个。OK,看一下啊,这是你的客户端啊,发送一次请求,那这个请求过来以后呢,呃,在我们这个后台的话呢,其实正常情况下我们会有这个业务服务器啊,然后呢,会有这个Tom k,然后最后你这个应用呢,是跑到这个tomcat里面的啊,虽然说现在我们讲的这个SPA boot呀,它里面是内置了Tom的,但实际情况的话,它还是这个样子的啊,就是你的他们cat是提供服务的。
04:03
是吧,大家昨天也感受到了啊,我们要去访问的话呢,首先前面写的就是什么local host,什么8080啊,这个就是什么去访问你这个服务的啊,访问到这个外部应用容器以后啊,然后就可以什么访问到你的这个外部应用。对吧,那你在这个应用中的话呢,就是你写的代码了啊,你要做什么操作,比如说你的什么请求,哎,你要做什么处理啊,那你在这个处理的过程中呢,我们基本上都会什么到你的这个数据服务里面啊,做一个什么读写操作。比如说我想读一些数据,或者说呢,我要往里面去写一些数据,对吧?啊,那这个交互完成以后呢,诶,比如说我们也处理完成了,那处理完成以后呢,我们最后需要什么给你的客户端啊,再发送一个响应。对吧,就一次请求,然后呢一次响应。啊,这就是我们,呃,整个这个Java web的一个什么交互过程。好吧,那我们,呃,把这个流程呢,先把它这个搞清楚了,搞清楚以后呢,我们重点讲解的其实就是这个环节啊,就这个环节我们应该怎么去写,就你这个请求你到底是怎么去处理的。
05:01
对吧,然后处理完成以后,你这个响应到底是怎么去响应的。是不是啊,重点讲的是这个环节啊,OK,好,然后呢,呃,这是我们整个这个Java web的一个交互过程啊,但是呃,我们这一次讲的话呢,是基于这个SP展开的啊,因为这个spbo的话呢,它呃特别的好用啊,就对于这个初学者来讲比较友善。啊,就你可以不用懂那么多原理啊,不用懂那么多这个细节的东西啊,你只要什么知道如何基于他提供给我们的方式,然后进行开发就行了。好吧,所以说我们选择了这个文啊。OK,呃,那它这个优势什么的啊,这个你就自己看看吧,反正它肯定是很好,如果不好的话,我们也不会用它哈,对吧?呃,那这个SPA怎么用呢?嗯,你先要去搭建一个这个SPA的一个模块啊,那我们这个搭建的时候呢,注意要选啊,选谁啊,这要选对了,选的是这个,呃,SP的一个什么in啊,就是这就是一个对的一个支持啊,这个ideal里面是对它有支持的啊,直接去选就可以,然后呢,你就一步一步啊,就可以把我们这个模块呢给它。
06:04
搭建起来。对吧,这个大家起来以后呢,哦,它里面会自带一个类啊,这个类的话叫什么,就比如像我们这个昨天写的这个吧,看我们自己写的哈,这个类就叫什么,就叫这个spring啊,就是你前面是你的名字啊,后面就是这个application。对吧,这个是按照你自己起的名字来的哈,你看叫什么DEMO对吧。我们就叫这个名字啊,STEM。是不是对吧,知道这个名字对吧?好,他就按照这个名字来的,然后呢,有一个启动类啊,那这个启动类呢,就将来我们写好这个应用以后呢,你想启动你就什么直接运行它就可以了。好吧,他把这个任务呢,做的也非常的简单啊,一个启动类就搞定啊好。呃,还有一个核心的配置文件啊,就是这个application practice啊,这个文件的话呢,暂时我们也没有配什么东西,对吧,暂时没有配什么东西啊,等这个今天我们呃,写接口的时候,我们是需要配点东西的啊,到时候再来说啊,现在先不关心他啊。好,那搭建好以后呢,下面我们就可以做开发了啊,但是开发的话呢,你还得了解一下这个就目前来讲啊,我们大家都这个履行的一种这个约定啊,分成了这个约定啊,就这个把它并不是说一个强制的要求啊,说你必须得这么写。
07:15
啊,但是我觉得他比这个强制的要求呢,呃,其实还大家还认可他啊,比这个要求还认可他,就是呃,我们都认为这么写是合适的,对吧,而且现在这个所有的程序啊,开发的时候呢,它都是以这种方式来去做,做这个分成的。啊说这个就我们得怎么去这个追寻他啊。好,呃,哪三层呢,第一层是这个controller,第二层是这个啊,第三层是这个map。好吧,那这个controller层的话呢,呃,就是我们所谓的这个控制层,那么它主要负责哪些事情,昨天我们也说过了叭,如说这个接收情结火参数调用服务层,然后呢,返馈什么响应和结果,对吧?我们会涉及很多注解啊,这个注解的话呢,差不多都讲到了啊,有个别的几个没有收到啊,今天还会再去说啊。
08:01
这个城呢?就是我们所谓的什么业务层,或者什么这个服务层,对吧,那么它主要什么处理这个核心的功能就是处理业务。好呃,然后这个map层啊,我们叫这个数据层啊,其实这个东西我们之前的话呢,不叫map啊,之前我们叫这个,我们更熟悉,把它叫成一个什么,诶叫成一个do城啊。Do啊好,这个稍微改一下吧啊。就是以前我们是更习惯把它叫成这个DAO啊,呃,叫DA的那个年代的话呢,就是你的这个数据层啊,呃,你这个通过这个不同的技术来实现的,比如说我可以什么通过这个买来实现,对吧,通过什么这个哈net来实现啊,通过什么各种这个持有化的框架来去实现它。啊,就是叫数据访问层啊,叫什么data access,然后呢,什么什么,呃,叫什么来着,这个我我也忘了啊,就数据访问层。明白吧,好,但现在的话,这个基本上都叫map,这个为什么都叫map呢?呃,因为目前来看啊,就是数据访问层啊,基本上都被这个买给垄断了。
09:06
啊,就这一层的话,基本上都是使用MY啊,就是这个很少就会会在什么使用别的框架啊,然后这个MY里面的它有它它带来了一个概念啊,一个概念就是什么,就是这个map这个概念啊,就map这个概念啊,就映射这个概念啊,所以说呢,我们造成这个map层的话呢,其实主要原因呢,也是因为这一层我们用的是买这个框架。理解吧,啊,现在都这么叫了啊,想大家知道一下啊。好,嗯,行,这是我们的分层啊,然后昨天的话,我们重点是讲了这个第一层啊,行,那我们讲了什么东西呢?讲了一下这个请求怎么去处理,对吧?来我们回到这个代码中看吧。好讲了,这个请求怎么去处理啊,从这个一开始写的这个hello hello请求,或者什么这个hello word这个请求啊,就是你首先的话,你得有一个就是控制层啊,这个控制层你怎么去写呢?那我们通常情况下,我们有什么直接标注一个rest controller。
10:00
对吧,啊,标注一下它啊,OK,它就相当于是一个controller注解,然后加上一个responsibility啊这样一个注解啊。那我们每一个方法上面的话呢,我们需要什么,按照你的这个请求对吧,然后呢,去标注一个request mapping就说白了,你将来是哪一个请求啊,那你希望用哪个方法去处理,那你就需要什么,把你的这个请求呢,跟这个方法呢,去做一个双射的一个关系啊这个mapping mapping不就是映射的意思吗?对吧,把方法和这个请求呢做一个映射,那么将来你真正的这个请求过来以后呢,他就会什么呀。通过你的这个什么request mapping找到,诶,你看我这个请求是在这标着的,OK,他就会什么正常去执行你的这个方法。明白了吧,啊,是这样的一个过程啊。好,然后呢,呃,请求打通以后呢,我们又讲了一下这个请求参数啊,那这个请求参数的话呢,我们讲了有三种是吧,第一种是这个KV格式的啊,这个应该是最简单的,也是最常见的啊,最简单也是最常最常见的啊呃,像这种参数的话呢,嗯,就是它比较看起来比较直观啊,比较直观,但是呢,这种参数里面的话呢,不适合去传输一些,呃,不适合去传输一些,这个叫什么叫比较这个隐私的啊,隐私的一些参数,比如说你的密码呀。
11:12
对不对,或者说你的这个什么什么,呃,什么生日啊,对吧,或者你的什么手机号啊等等那些东西啊,他不适合去传输啊,因为这些东西相对来讲还是个人的一个隐私,对不对,那你如果说你直接这么传输的话,那我都给你暴露出来了,对吧?都给你暴露出来,这个是不太好的好吧,所以这里面传输一些什么,传输一些这个就是不太重要的啊,也不能叫不太重要,就是这个东西我可以暴露给你看的。对吧,不会受什么影响的参数啊,你可以这么去传啊,好这种参数我们怎么获取呢?你就什么通过这个request来去获取就可以了。那如果说你这个名字啊,就就看这个啊,这个名字跟他一样,那你这个东西写都不用写,我直接给你做映射。对吧,啊,这还比较简单啊。呃,第二种是嵌入到这个地址栏中的参数啊,这种东西的话呢,这个最近几年用的比较多了啊,这个很早之前其实很少用用这种方式对吧,这个其实就是我们所谓这个restful啊。
12:07
啊,有同学应该听过啊,这个rest这种风格对吧,那你可以什么使用这种方式啊,OK,行,那这个SPA布置的话也支持啊,就如果说你是想获取这个嵌入到路径里面的,那你什么通过这个张瑞福的方式去写对吧?将来通过另外一个注解叫做pass rob啊,然后呢,去获取这个参数就可以了啊,这个就必须得指定了啊,就算你名字一样,它也不能够做映射的。好吧,你必须得指定的啊。然后第三种是我们讲的这个请求体的这个参数啊,呃,那什么时候用这个请求体呢?就是比如说我们想提交一些参数,这些参数的话呢,我们不想去暴露出来,对吧,我就把它包含到这个请求体中啊,就最起码呢,你不能为什么非常直观的看到他。好,但是呢,呃,也并不代表着说,那我放到请求里中就绝对安全了吗?不安全,只要你是在这个网络中传输的,你甭管是暴露出来的,还是说把它什么包含起来的,只要你在网络中传输,我都可以做拦截。
13:00
那我来接到以后呢,你传了个什么东西,那我都是什么一清二楚的。对吧,所以说啊,你觉得说这个参数呢,是比较什么,关键的是不能够被别人什么轻易的看得到的,那你在传输之前,你要怎么对这个参数呢,做加密操作,对吧?我们不涉及这个了啊,做加密操作,就算别人拦截到了,他看到的是加密以后的数据,那他还得怎么去破解。对吧,那如果说他不知道你这个加密算法的,他就什么很难再把这个东西给大家破解回去。是不是或者说他要破解的话,也得什么花费这个很大的一个精力去破解。明白吧,啊,这个大家知道一下就行了啊,我们现在不涉及那些东西啊好,呃,那你放到这个请求体中的参数,我们怎么去获取呢?嗯,其实啊,你也可以什么直接就什么通过这个名字去映射就可以了,或者什么通过那个什么request去指定一下就可以了。对吧,啊啊,后面我们又说了一种啊,就是呃,我们有多个参数的情况下啊,然后呢,我们想什么,直接把它映射到一个对象中。对吧,我们用了一个这个request body啊。
14:00
呃,然后呢,他就可以什么直接把这个对象啊,把这个提交的这个参数呢,给大什么直接放到我们这个对象里面啊,不过这种情况的话呢,呃,我们是通过这个就是发送这个加的这个方式来的啊,我们用一下这个postsman这个工具啊。嗯。好把它打开啊,就是我们用一下这个工具啊,我们发送一个请求,然后呢,在这个呃,包的里面啊,我们传了一个什么再生数据,对吧。那么这个数据的话呢,你过来以后呢,我就什么可以什么直接把它什么映射到我这个对象中,那我对象里面有什么东西。那我就什么按照什么你的这个名字给你什么做一个映射。好吧,啊,其实这个用的相对还是比较多的啊,因为现在我们比较主流的就是你的前后交互啊,比如说你的客户端和这个服务端的交互,他们之间啊都是什么通过这个摘格式来去交互的,因为他们两个的交互啊,一般都是什么数据的一个交换,就是我给你发点东西,你给我返回点东西。对吧,这个叫一个交互,如果说我也不给你发东西,你也不给我返回东西,那你这个交互就没啥意思。好,那现在比较主流的就是通过这个摘胜格式呢,去做这个数据的交互,比如说我给你发的东西是摘格式的,你给我响应的东西呢,也是这个摘胜格式的。
15:09
理解吧,啊这是比较好的,因为这个Jason吧,呃,在你这个Java中,诶,我们是非趁去解析的,在这个前端啊,前端呢,也是非趁去解析这个Jason的,比如说前端我们用的是这个jas对不对啊javascript啊,它去解析Jason的,也是非常好去解析的。而且呢,这个Jason的话,它这个格式呢,还是比较直观的啊,格式也比较紧凑,相对来讲啊,这个传输的数据量呢,也没有那么大。啊,所以现在的话,这个基本上啊,都是通过这个摘省进行交互。好吧,所以说我们这个用一下这个接口测试工具啊呃,那这个工具的话呢,我们后面就要什么把它用起来了啊,就我就不会说再打开个浏览器对吧,然后在这里面去写个地址,然后呢给你提交个请求,然后再看一下这个结果,这个很麻烦。理解吧,这个很麻烦啊,就一般我们在这个开发过程中,你要去写这个接口的话呢,都是会采用这种什么接口测试工具来进行测试的。
16:01
听懂了吧,啊,这个是用起来非常方便的,比如说我想呃,换请求方式对吧,我想什么去传什么什么参数,改什么什么参数。对不对啊,我像什么这个海底里面我想带什么什么东西。对吧,啊,这个都是可以什么非常方便的去什么,呃填写的。OK吧,所以这个以后我们就要什么使用这个接口测试工具啊,把这个熟悉一下啊,其实很简单啊,啊,我们的话也用不到太多的功能啊,就是简单的一个请求,然后传了什么参数,看看你给我返回什么结果就完事了。OK吧?行,呃,那就是我们这个昨天给大家去讲的内容啊嗯。那就回顾这么多吧,好吧,没了啊。哦哦,对,还有一个实体类这个事说一下吧,啊呃,这个实体类的话,我们写了一个cost对不对,然后呢,上面我们这个标注了一下这个。就是通过这个longb这个插件啊,然后呢,去做了一下这个我们的什么构造器啊,什么概率set的方法这些东西啊,这个你就知道怎么用就行了哈,对吧,这也比较简单啊,没什么难的啊好。
17:05
行不说了啊。
我来说两句