00:00
好,那我们接下来还是接着来做我们这个创建交易这个模块,这这个这个功能,这个功能,我说他这个流程创建的时候,跟前面所有的这些模块不太一样。别的都是说创建的时候一点这个一点创建的钮候,弹出一个摩擦窗口,它摩擦窗口好处就是说它这个它摩擦转口好处就是说他不用跳转页面,所有的操作都在同一个页面中完成的,知道吧,所有操作同一个页面完,这样的话操作就比较好操作,而且用户体验也比较好。这是我们前面做的这个,但是这个创建交易呢,大家看你点开跳转这个页面,其实这种创建的方式,其实对用户而言的话,其实它体验并没有弹窗乳那么好。没有没有代码,没有那个对用户而言,没有弹窗口那种体验更好,就为什么更好,你这种一点它跳转页面。那这个页面一开始在服务器里边存着的,他得通过网络去传过来,这样用户才能看到页面,那他如果网速很慢的话,这个时候对他网速有要求,知这样,所以大家看,所以其实这种体验并不好,但是这其是一种模式,所以大家也要会有的人喜欢这样,所以说那他就这样,那么他提出这种这种要求,知吧,他提供什么样的需求,那我们就做了什么,知道就这种流程,知吧,那跳转到这个页面,我们说跳转到这个创建交易的页面,然后呢,在上面有些动态数据,该显示的都显示出来。
01:30
然后用户在这儿填写表单,填完了之后,然后他一点保存,想后台发,你把填的这些数据全部都发到后台,然后后台就保存,保存成功了,跳转到主页面就就跳转了,然后呢,保存失败了,提示信息页面不跳转就行了。所以他这种做法来看,他给这种吧,他模态窗口不太一样,他模态窗口主要操作模态窗口,他这个是套装页面。当然我们说保存成功了,他就再跳转到这个主页面。
02:00
啊,当然如果这样的话,弹们的窗口都在同一个页面中完成,就这意思知道吧,啊,当然我们说这两种模式大家都要会都要会知吧,到公司里边我们两种模式都有用啊好,这是我们这下面呢,我们接着来做我们这个创建交易的这个功能,我们上次课是这样,上课课已经做到这儿了,说用户想创建交易,首先点交易的菜单,来到交易的主页面,在工作群统打开了,然后用户想创建交易,他有什么,点创建按钮跳转到创建交易的页面。然后呢,在创建交易的页面上面有些动态数据,像下拉列表这块数据,这些都应该显示出来,知道吧,还有大看,我说还有这个,还有这个这两个可搜索的知吧,按理说给我们种,按理说你得做出来就是这种可搜索的这种功能,但他做法让大看给我们以前做这种线索转换的候,创建交易的时候,这个市场活动员可搜索了,做法几乎完全一样,甚至比我们当时做的还简单的,所以说大概我说这两个我们课堂上没做,那你课下自己做就行了,知道吧。
03:05
好,大家那在这个页面上面呢,创建交易的页面上面,下面这些动态数据都有了可搜索的功能,假如咱们也都做完了,那这个时候还有这两个,根据他的需求说,可能性是可配置的,还有客户名称知识自动补全,所以我们接下来就重点做这两个功能。知道吧,好,那这两个功能先做哪一个,后做哪个无所谓了,这两个没有没有直接的关系,那我们先做这个吧,这个简单一点。先做可能性的可配置,那么所以下边我们来看看这个可能性的可配置,可能性的可配置,可配置是吧,它这个可配置,当然我们说我们上次给大家简单分析过了,它这个可配置做成什么样子,那做成什么样子,就是这样让用户给我们提供一个配置文件,我们来用这个配置文件干什么,就根据他们的这种销售经验来这总结出来的,每一个阶段对应一个可能性是吧,每一个阶段对应可能性在配置文件里边来配置好了。
04:11
就每一个阶段用户来提供配置文件,让我们叫用户提供配置文件,提供配置文件,然后在这个配置完成,配置什么呢?配置配置就每一个阶段对应一个可能性,可能性知道吗?知道吗?他给我们提供配置样,然后我们干什么呢?然后当用户选择一个阶段的时候,那我说这阶段都有顺序的,当然可越靠近成交这个阶段,那可成交的可能性肯定越大,所以说我们这个地方它是都有顺序的,当用户选择任何一个阶段的时候。向后台发请求,那我们后台加构代码,拿到请求之后呢,根据他选的阶段去到配置文件里边去找一个可能性,找了之后返回给他填上,自动填上就行了,所以我们这是当用户,当用户选择啊选择阶段时,阶段时那。
05:07
然后呢,我们可以根据什么,根据他选择的阶段,根据选择的阶段来获取可能性,可能性来获取可能性啊,来获取这个可能性,然后呢,呃,获取到之后来显示到来显示到,然后呢,输入框。这是我们就准备来做这个事儿啊,准备这个他将来每选一个阶段都应该自动带出来一个可能性,就这意思,就这样啊好,下边我们就准备来做这个了,那来做这个的话,那我们下边那我们要做的话来看要做这个功能的话,我们应该是这么来做了,分这么几步,懂吧,这样分这么几步,大家可以看了,然后呢,要实验它分这么几步,第一步是吧,那我们要做的话呢,你看分析下呢,第一步应该怎么,他每选一个阶段,那应该什么,应该趋向于去到后台是去找一个可能性去了,那你后台又提供一个配置文件是吧?然后呢,去找后台要提供一个配置文件,那这个配置文件应该是每一个阶段对应的可能性。
06:17
所以说第一步是不是要提供这个配置文件了,对第一步要提供配置文件,提供配置文件,这个配置文件我们说是由用户来提供的,那用户怎么会提供吗?那他那肯定是约定好的,到什么样的配置文件,那他肯定是约定好的,这个不是他随便选的是吧?有用户来提供一个配容件,有用户提供,因为什么,我们也不知道每个阶段对应可能性是多少,让用户来提供,这是他提是吧,他听完了之后再看,每次呢,我们再往下做的话,那当用户每次选一个阶段。都应该向后台发,为什么后台话,因为这个配文件肯定在后台的用户提供好,肯定放后台,那为什么放后台,那他不可能放到前台,放到前台,前台在什么用户浏览器上面,每一个人保存一份嘛,所以肯定不知道,所以这个配置文件一定要放到后台啊,然后呢,提供这个配置文件,然后呢,保存到保存在后台服务器,服务器上某一个文件上面保存上就行了,那么他用户每每次选的阶段,让用户每次选择阶段,然后呢,都应该向后台发送请求,向后台发送请求,发送请求,发送请求干什么去获取可能性去。
07:39
那叫获获取更线知道吗?然后呢,那我们说第三步,我说就这样他向后台发掘,那你后台又提供control了,所以我们说后台提供什么controller,然后干什么接收和处理请求,什么接收。请求,然后呢根据他选的阶段,选择的阶段来获取么叫什么叫解析,我们说这个配置文件,配置文件用户提供好了,放到后台服务器上某一个地方,知道吧,这说我们这样,那你说放到服务器上吧,他怎么放啊,我们肯定给他约定好放在某一个地方,他不可能随便放一个地方,好这是我们照片,然后呢解析配置文件,然后呢,这个地方来根据选择的阶段解析配置文件来获取这个阶段对应的可能性,对应的可能性就这啊,然后呢,这个地方获取这个可能性,那获取了之后把可能性返回到前台,然后呢就直接输输入到显示到输入框中去统,然后呢这个地方来把可能性获取到的可能性,可能性然后呢返回前台页面,然后呢,显示在输。
08:57
主框这样就行了,好这样的话,大家我们大概就这个步骤知道吗?这是我们这个步骤,然后呢,大家这个步骤大家如何大概了解之后,下面我们来看看每一步就每一步怎么去做,那么现在目前来讲的话,有一些哪些问题没有确定,那我们一块来分析一下看,首先大家这个配置文件来看。
09:21
他提供的话,能不能让他随便提供,肯定不能随便提供是吧,肯定是约定好的,这个配砖肯定约定好,那约定好到底生成什么样的配置文件,你得确定那什么样的配置文件,一会儿我们给大家分析一下,到底要让他提供什么样的配置文件,这是大家用户给我们,给我们这种程序员,我的开发人件约定好的,什么时候约定好,肯定做需求调研的时候就约定好了,知道吧,这是这种个配置文件怎么约定,我们一会儿再说这个,但后边这些的啊,假如说这个配置人员已经提供好了,后边这些难不了,是不是就不不太难了,都是Java代码了,这些都比较比较容易了,那说可能比较难的地方就是谁啊,解析配置文件,但是解析配置文件咱们前面也都学过了,大家因为老师解析配置文件怎么解析。
10:12
我们前面再看学过什么,前面学过中最常用的配水呢,就两两种分水线哪一个。花婆得是陪着你。还有一个什么XML配置文件,这两种配置文件的解析都好解析啊。解析过吗?这两种配种呢?对,都不难,都是大家以前学过的pro解析的文件,什么时候解析啊,什么时候学的。学什么Java SE学IO流的时候不是学了吗?IO流的时候当时是不是学过这个类,对pro这个类啊,它是专门解析这种X马,学X马的时候学的啊是吧,这个然后我们说大,我说这种解析这加法代码都比较比较比较简单了,语法都比较简单,你说老师我确实不会,那不会怎么到网上一搜一大堆知道吗?我说语法都是很简单了,你知道吧。
11:11
啊,当然这些返回到前台显示的输入框,这更简单了,知吧,所以大看我说后边这些其实都比较比较简单,主要是提供配置文件,到底提供什么样的配置文件,这是我们这个地方想想给大家简过,给大家提的一个地方,就这能配置文件怎么提怎么提供,懂么?让用户给我们提供配置文件,虽然让他提供也不是让他随便提供,那你要让他随便提供还能得了,他一会儿提供这种配置文件,他一会儿提供那种配置文件,那你说那那我后台怎么解析啊,将来,所以这个配置文件一定是提供好的啊,一定是约定好的,知道吗?这时候我们要知道,那你说要约定好这个配置文件到底什么格式的,到底什么样的配置文件,从理论上来讲,应该什么配置文件都行。你别说是proper文件,SM2件,你就是一个word文件,就是一个Excel文件,就是一个什么PDF这种文件也行啊,你是别的是一个点,就是记事本一个文件也可以。
12:09
你只他只要能够让他把这个信息表达出来就行,一个阶段对应一个可能性就行,但你说老师那说那这些配置文件都行,那到底约定约定成什么样的配置文件。那我们说,那说既然都行了,那这个时候你要找一个什么将来操作好好操作的,我们程序员解析,到时候好解析,然后用户呢,也得能接触他往里边写数据也好,写配置信息也好,配置这种配置文件最好知道吗?所以说他刚我们说,那当然从与理论上来讲,啥配置文件都行。但是你不说,我一般来讲不是说啊,随便找一个文件就行,那就要找什么样的文件,我们说我们以后开发的时候用配置文件,最典型的两种配置文件,就是刚才我说的那一个是proper的配置文件,还有一个是那个。
13:01
XM2,配置文件,所以大家以后用配置文件基本上就这两种知道吧,所以下边我们就准备给大家说一下这两种配置文件都什么特点,到底我们什么情况下用这种配置文件,请问什么情况用那种配件?我们给大家简单说一下,就是关于这种配置文件,我们开发过程中用到一些配置文件,这些配置文件其实以后也也有可能会用到配置文件,就是提供配置文件的时候,这些配置文件开发的时候也有能用到啊,是我们自己用的配置文件,不是框架用的,框架用的,它是框架都是这么规定好的,那么我们自己用也是规定好的。到底配置什么信息,一个什么格式也是规定好的,那到底什么样的配置文件,我们说两种,最常用的两种配置,一个是叫什么什么的,一个点proper配置文件。我跟你讲,这是大家以后用的比较多的一种配置文件,就这种配置文件,就用这种配置件,它配置信息,它配置什么样的信息,那你说你要用它的话,你得了解它的语法,就它这种也有语法,它也有格式的,它的格式是什么样子。
14:07
知道它这种pro的不样又叫属性文件,这属性文件什么意思,就是给你创建那些实体类一样,有属性,没有属性值,属性没有值,所以它的语法就是什么呢?就这样,里边可以配置一系列的什么K,然后呢,VALUE6K value6就这样。可以配置多个KY6 KY6,就它的语法就是一系列的KY6,知道吧,K1 Y61,然后呢,这个地方来一个,再来一个K2Y62,知道吧,一个K对应一个Y6,一个K对应Y,就它配置这种东西,它可以配置很多个,当然我说一个配置文件里边这个K不能重复,Y6可以重复,K必须是唯一的,而且大家看K和Y6都必须是字符串数据。这,这是他的语法,知道吧,这是这种婆婆的配种娘的语法知道吧。所以这时候我们说,那它的语法是这样,它就决定了这种那个配置文件它的使用和应用场景。
15:06
他的语法就是很简单的k value 6k value知这种k value k value知道吗?所以说他跟我说他这个KYY,那说他这他的语法是这样,那他就决定了说我们以后它的应用场,它的应用场景是什么样的。对他他这他这种应用场景是吧,一个K861个K6,那说一个K一个数据的名字对应一个数据值,一个数据名字对应值,那他配置那些信息,它应用场景就是说你在你开发以后,开发的时候,什么样的数据配到这种配置箭头,就你要配置些数据,一个数据对应另一个数据,一个数据对应另一个数据,这个时候这种数据适合于使用这种pro做配,知道吧。这是我们要知道的,而且的话,这种数据呢,它这种语法都是一个数据对应另一个数据,一一对应的这种关系,一一对应的这种关系,那我要有一些复杂的数据,一个顺序对应多个数据的时候。
16:01
这种情况下就不适合了,就不能用普号倍的配水文件了,所以说大家这种配置文件它的优势就是什么,它的优势就是说语法简单叫语法简单,而且几乎没有冗余数据叫什么意思,这都是我自己的数据要配置的数据。没有别的乱七八糟的数据,我什么我这个配置文件以以后它的那么它的这它的这个大小,它的这个数量比较小,它不像那其他的什么,我配置一个信息,还得什么加一些乱七八糟别的格式,格式化的一些信息,一些标签什么等等,这些他没有知道吧,他没有,所以说他这种配置文件,它适合那种适合那种适合什么叫适合配置,它适合配置那些什么简单数据,简单数据就这个数据的逻辑关系没有那么复杂,就是这一类数据跟另一类数据一一对应的这种东西。就这样的话,我们适合适合什么,使用pro什么,那些复杂的数据,一个数据下边可以有很多数据,下边数据什么,又可以有很多数据,这种比较复杂的这种逻辑关系的数据不适合用它,知道吧,就它适合用这种简单数据啊,简单数据什么,而且大个用么简单数据用它,那简单数据能不能用别的配置文件也行,但别的配置文件有可能会加一些冗余数据,所以它的好处就是说几乎没有冗余数据,这些都是我们要配置的数据,将来解析,到时候通过K获取Y6,拿到K获取Y6,拿到K获取Y6,你知道吗?所以它的冗余数据只有一个等号。
17:30
所以像这些配置文件我们说都比较重要,这些配置文件这我说它几乎没有冗没几乎没有冗余数据,没有冗余数据,几乎没有冗余数据知道吗。啊,那没有冗余数据,将来你解析的时候就比较什么效率比较高,解析的效率高,使用的效率怎么效率高,你以后解析的时候,你肯定会会把这个配置文件里边这些信息都读到内存里边,所以他没有冗余数据,所以它占内存比较小。
18:04
再一个我们说将来这些配置件有可能我们做什么一些分布式开发的时候,这些配置文件有可能从一个应用传给另一个应用,这个应用想用到这个应用里边的一些配置文件,一些配置信息,这个时候你还能可能会经过网络进行传递,网络传递的时候它几乎没有数,没有冗余数据,传递的都是你的自己的要配置的数据,所以它传递的效率也比较高。叫什么,所以运行的效率,解析的效率高,在一个传输的效率也高,就这个意思,所以这种的话,这种配置文件是我们以后用的比较多,而且它仅仅适用于那些简单出具,就这意思。好,这时候我们刚才说的这样,再一个我们说它的解析相对简单,解析相对简单,相对简单。那解析相对的,怎么解析相对讲呢?那我说这种配成价,大家解析的时候大家都知道,就是用我们前面学的IO的那些工具类,就可以直接解析了哪一个IO的工具类。
19:02
不知道大家还记得不记得,就这个看有很多同学忘了,就这个这个properties这个工具类,这是Java给我们提供的一个工具类,IO里边给我提供工具类,这个工具类专门用来解析这种pro欧的快空间怎么解析的。你创建它一个对象是吧,它一个对象里边有个方法叫load的那个方法,然后你想解析哪个文件,以调load的方法,把这个文件以留的形式传给那个方法,然后那个方法呢,就生成一个对象了,这个对象里边会把这个配置文件里边所有的KY6 KY6全部都封成一个对象里边,然后那个对象呢,通过该的方法,你想获取哪个这个Y6值给他传个K,他就把Y6值给你找回来,就这个意思知道吧?啊,当然它这个具体的语法大家可以看看前面笔记用这个类专门解析pro软件知道吧,当然还有别的解析方式。我们这个东西我们不准备用这种,这种是JDK给我们提供的早期提供的一个工具类,他解析的时候,它解析的时候就不用你自己解析这种破东西,直接用它就行了,当我说他用的时候比较麻烦一些。
20:09
我说怎么比较麻烦了,他要用到瘤,用到流怎么了?用到流你得用流读这个文件,用流读文件还不好读吗?关键是用流读文件的时候,他得需要这个文件的路径,路径程序员最麻烦的是什么?最头疼是什么?就是操作文件的路径,为什么头疼,因为路径有绝对路径和相对路径,你这个时候你得去找,所以他找的时候不好找怎么办呢?所以到后来JDK什么又给我们提供另一个工具类,这个工具类不知道大家用过没有,这个肯定用过这个工具类,实际开发的都用这个工具,哪一个就是这个。我们就准备用这个给大家用,这个叫bomb resource这个工具类知道吗?叫resource这个工具类知道吗?它专门它也是专门来解析这种普尔勒分什怎么用,我一会写的时候就用它,我一写你就知道了,知道吧,好,这语法都是比较简单的,知道白好这是我们说这种pro的配置文件,你用它也行,只要用户能接受,你也能接受,但我们肯定能接受,因为它比较简单嘛,只要用户能接,那用户肯定也能接入,因为它的语法比较简单,就是配置一个数据对应对应一个数据,对应对应数据,知道吧,你就可以用它,只要你的简数据比较简单,都可以用它,知道吧,那有老师,万一我怎么这个数据比较复杂的时候怎么办,你就不能用它了,它只能配置简单数据。
21:31
那用什么用这种配置中间,就是大家最常见的时配置中间哪一种呢?X叫什么什么的叫XM2配中间,这也是大家以后开发的时候经常用的一种黑中间,而且大家你会看到我们那些什么SSM那些框架用的基本上都是这样。XM2配重件这边用了这种用的最多的这种配重件。这时我们要这样,嗯,这一种也是用的比较多,它主要是什么,它主要配置一些复杂的是吧,数据的,那它为什么,它为什么能配置复杂数据,这有XML这配置量的语法来决定的,它的语法都是什么样的。
22:12
这XM2这语法都是什么样的?都是这些什么标签,懂吗?都是标签,还有一种标记语言。叫标签,那么标签里边嘛,套标签,标签里边有属性知道吗?它都是以标签为单位,然后吗来进行这个,它这种标签语言叫标记语言,就道以标签为单位来这个来这个什么配置这些信息的,知那时候标签为单位,那标签怎么标签可以套标签,然后标签里边可以有属性,标签套标签,标签里边还可以再套标间,可以无限制的套下去,所以说这种语言,这种语法其实是比较强大的。从理论上来讲,应该是现实世界中任何复杂的数据都能用标,都能用X来进行配置,不管多复杂的数据,都可以用XML配置文件来配置出来。
23:05
张啊,那你比如说大概我举个例子,你比如说这样,你比如说我假设你给我配置个学生的信息,你就可以配置出来,用X2配置。怎么配置它都是标签啊,你比如我要配这个学生定一个标签,这个标签你说老师可不可以随随随意定义,随意定义,我们以前给大家说过X它是一种语言,叫什么语言,X叫什么叫。知道吧叫什么?Tentens知道吧叫什么?可扩展的M呢?叫mark up知道吧标记L呢,Language知道吧叫可扩展的标记语言知道吗?所以说这些标签,这些标记,还有这些属性,随意扩展。你随意定义都行,但是你要符合它的语法,什么语法,一般标签的话,如果有标签体的,有开始标签,有结束标签。
24:00
然后呢,标签的名字要符合标识符的命名规则,这个标签里边可以定义属性,属性名要符合标识符的命名规则,然后属性值要用引号括解。就知道了,所以说大家他这种语言就是什么,就这种可扩展的这种语言,他可以配置任意复杂的这种数据,你比如我要配置个学生的信息,我就可以这么配置死stupid电脑,然后呢,这个地方来一个随意点,随意点你想配置就那么配置吧,学生有学生的一些一些属性啊,有什么学生有学生的学号,再定一个标签,学生的学1001,然后呢,再配这个学生的姓名,这样然后呢,这个地方来个内幕,然后呢,张三知道呢,学生的年龄,然后呢,这个地方来,然后呢,这个地方来个年龄20岁。假如你说老师学生还有什么,假如学生有学生的邮箱,你想定义成标签也行,你想定成属性也行,最好属性这个地方来一个你email有,然后呢,这个地方来一个字来张三。
25:06
好163这窗你再定义别的手机号什么的,也可以随意定义,当然你也可以定成指标交流。啊,所以说大家这些啊,它这种语法比较强大,这些复杂的数据可以随。那你说我想定义多个学生怎么也可以啊,怎么定义多个学生再加一个1002李四。李四是吧,然后呢,这个地方来管李四多个学生,那你说这样配置行吗?其实这样配置不行,为什么不行?XML的语法大家知道,整个标签是不是只有一个根啊,整个X只有一个根,你这俩根呢,俩根不符合XL语法了,那怎么办呢?我要配置多个学生怎么办呢?对外边再套一个什么,再套一个标签,知道什么student list,然后呢,这个地方再套,可以无限制的套下去,知道吧,这都这不是就这不就变成一个根了吗?知道吗。
26:12
那我说这是这这是一个班级的学生,我配置多个班级的学生,怎么再套知道吧,所以可以无限制的套下去,我说这种标签的强,这种这个配置文件的强大之处在于什么呢?不管多复杂的数据,用它都能配置出来。现实世界,你不管多复杂的数据,他都能,他都能表示,你知道吗?所以大家我们以后配置的时候,对吧,你要如果你要数据很复杂,都用这种X配置件,当是你看咱们这些框架,咱们学的这些框架,你看到。SSM框架,你看他们用的是配文件,看吧,全部都是X2,这为什么X2他们为什么不用pro的?就因为它是标车比较复杂的,所以用pro评价表示不出来这么复杂的信息知道吧,所以它比较强大,所以说大概我们说它的语法就决定了它这种配置文件适合什么,适合这适合配置复杂的数据。
27:09
配置复杂的数据是吧,适合配置这些复杂数据啊,你说老师他能配置简单数据吗?那那当然太能了是吧,太能了,但是说简单数据用它吧,我们一般简单数据不会用它,为什么你用它的话,但你看看大家看我真正配置我自己的业务数据是谁啊。这下是我的业务水平,你看吧。但是他为了配置我这业务出去,你看他给我加了哪些各种标签,各种属性,你知道吧,这些都是什么,为了规范这种数据的格式,给我配置这些,那么添加的这些标签,这些都是一些冗余数据,所以它会产生冗余数据,产生冗余数据知道吗?就没用的数据知道吗?冗余数据是你真正要配置数据是这些,你们老师冗余数据怎么了?冗余数据好了以后解析的时候,你得把这个配置文件读到内存里边,读到内存里边怎么了?那他占内存啊,真正我的数据就这些数据,他们其他的也都占到内存了。
28:13
效率低,再一个我们要把这个配置文件,假如在分布式应用的时候,在多个应用之间传递配置文件的时候,他们也得占网速去传入,所以它的效率低,效率低,效率低,然后这些,那你说老师没,你说老师能不能提高,他没办法,你要只你要用他的这种强大的这种吗。强的这种语言的这种功能,那你只能这样来做。所以还是那句话,任何事物都是两方面的,它强大的同时它也带来一些麻烦,知道吧,所以说那我们那那你说老师什么时候用它,什么时候用它,你的数据复杂了,用这种课本呢,不说不行了,你再用它,简单数据优先用它,就这意思。所以这是我们说的这样,再一个我们说它的什么,它这种配置,它这种配置文件,它的语法这么复杂,那我们以后解析的时候,当然解析出来,解析的时候也是相对麻烦,解析的时候我想把这个配置文件里边写的这些内容,我想把里边数据都取出来,取来之后插入到数据库里边怎么办?
29:15
要解析这个配置能量,把里边每一个学生的信息都取出来。这个时候要解析解析,所以它的解析解析起来相对于X pro的这种配偶件相对复杂,相对复杂,但是相对复杂,对于我们程序员而言的话,你也要会解析这种配置文件,给你一个XML配置件,你要能够获取它里边这些数据,那怎么获取?咱们以前学XML的老师给他讲过,讲过解析XML配容件两种方式,有两种技术。这两种技术大家一定要会。会一种就行啊,不要不要不要求会两种,你只要会一种就行,这俩大同小异,这种记住不知道大家这个前面写没写过哪一个,一个是这个。
30:07
盗墓佛界不是个就在这道墓佛界。这说我们这还有一个技术叫接刀,接刀这两个技术它俩类似的,会一个就行。他俩都是用Java来解析pro的配置文件,解析X2配置文件的,你把一个配置文件给你,它能够把里边的所有的标签里边的标签体里边内容,以及指定标签的指定属性里边的内容取出来。知道吗?所以这俩会一个就行,那你说老师那这个地方,那我不会怎么翻笔记是吗?知道笔记上面没记的吗。我我说网上啥都有,就这些语法,我们说语法现在不应该再难倒你了,呃,即使你没写过,到网上一搜你也会,你只要有这种思想,给你配置文件,你一定能解决了,那你看你比如说我举个例子,我就用这个街道模,你说老师他俩用哪一个,市面上他俩都有用。
31:09
基本上百分50%到百分之对50%用哪一个基组都有是吧,你要接道母来解析叫XLK分。一一搜他com它可以,它既能生成你给他文件,它能解析你给他数据,它能生成X配文件,就用Java代码来生成干嘛,就这些。到时候你自己研究一下就行了,这就知道吗?啊,这个地方我们就我们就不给他多说了,看吧,这些例子多的是啊,当然你你翻一翻前面笔记也行,知道吗。所以大家总之吧,就这两种配置文件是我们以后最经常用的。知道吧,那你这两个配置呢,你都要会用,知道吧,还要直接,而且要知道它的应用场景,优先用这用他不满足了再用它,你说老师市面上还有我们以后开发还用别的配置文件吗?也有,但是别的太少了,别的太少了,基本上都是这样知道。
32:04
所以这是我们说这个地方,那我们要做这个什么,我们要做配置一个阶段,对应一个可能性。那么我们当然当时我们说假如做需求调研的时候,跟客户约定好这两个配置文件,给客户约定好我们这对于我们这种情况,用哪个配置文件比较好一些。是不是pro的配置文件啊,对,为什么我们的数据的特点决定了因一个什么,一个数据对应一个可能性,就一个数据对应另一个数据,就一个阶段对应一个可能性,一个阶段推应可能性,所以对于我们这种情况来讲的话,提供一个proper的配置文件就行了,所以这是我们说的啊,那所以说他看我们第一步先让用户提供配配置文件,这个配置文件就是pro的配置文件了,你说老师我用它可不可以,但肯定也可以了,但我说他不不太适合我们这种情况,它太复杂了,知道吧。好,这时候我们知,所以大概我们要做这个功能呢,第一件事就是提供那个配置文件了,这个配置文件我们就用pro的配置文件了,就是配置可能性,可能性给客户约定好,你给我,你们给我提供,你们给我提供一个这种配置文件,这个配置文件配置什么,一个阶段对应可能性,那这个配置文件是什么?就是pro文件,文件名给它,也就是约定好的,假如就是配置可能性呢,我就直接给它命名了,叫possibility点叫pro配置文件,这到时候让他提供就行了,那提供的话,这里边要让他用户帮我们往里边写内容,这里边内容肯定也约定好了,你不能让随便写,那里边内容就是一个阶段对应一个可能性。
33:44
你知道吗?那根据它这种什么配置文件的这种语法,一个K对应一个Y6,一个K文件Y6,那么将来用的时候通过K来获取VALUE6就行了。用到时知道吗?那当然我我们又问大家了,那我们说那让用户提供这个pro,为什么呀?那到底让他用。
34:01
阶段做KL还是可能性做KL?你说你家里边配置阶段对应可能性阶段和可能性,谁做K谁做Y流。阶段对阶段做K,然后呢,可能性做Y流是不是这样的,那当用户什么为什么是阶段做K,当用户一选一个阶段,是不是我们手里边有阶段了,将来根据阶段获取那个对应的可能性就行。所以说他们阶段做K可能性左Y6阶段做K,然后呢,可能性做Y6,左Y6知道吗?那阶段我们都知道,阶段有都这些数据都在什么数据字典只标准存着的有阶段名字,有阶段ID,阶段名字做K还是阶段的ID做K啊。对,是不是按理说阶段ID啊,为什么因阶,因为阶段ID不重复,但是你再想一想,这个什么配置文件是让用户提供的,如果用ID做K的话,用户知道ID吗?是不是不知道啊,所以按理说得用ID做K,但是用用户提供,所以就不能用ID了,因为用户也不知道每一个阶段ID是个30次数,他也不知道是谁,所以说这个不太适合,所以只能用什么阶段的名字名称做K阶段的名称就可。
35:29
阶段名称K,然后呢,可能性做外流知道吧,那有同学说老师阶段的名称做K,万一阶段名称重名了呢。那一个K对应一个可能性,那个K不是不能重名吗。但阶段我们说数学字典值那个表里表的那些什么。那些名字是不是有可能出名啊,但是我们知道具体到阶段交易的阶段,这几个阶段有有没有可能出名啊,所以这个不太可能出名,就这几个阶段,你说再出名,所以不太可能,所以说具体的数据字典值那个表里边的每这些什么,那些每一个数据资产值名字有可能出名,但是具体的阶段里边,所以就不太可能出名了,所以说也可以直接用阶段名字就可,这就行了。
36:20
所以这时候我们说的这个配置文件,我们就给他给就给大家这个说到这儿了,那下边我们就按照我们这个分析,让客户给我们提供一个配置文件就行了,在这说阶段的名字都可以,阶段到什么,这个每一个阶段对应的value,对应的可能性做value知道吧,好,下边提供一个配置文件,那这个配置文件我叫什么提供好,让用户提供好,我们约定好放一个位置就行了,那放哪儿,我们这个地方,我们简单写了,就放这个配置文件,就放这个目录下边就行了。那你说老师这个配置文件用户提供的,他知道放这儿吗。他知道放这儿吗?得告诉他放这就行了,那告诉他放这他怎么知道resource?
37:02
其实就给他约定好放在某服务器某个目录就行了,我们可以写程序干什么?到那个目录里边取,取出来之后是吗?拷贝到这边不就行了吗?大家明白这意思吧,对,写程序可以拷贝过了,当然这个程序我们就不拷贝了,当我们还可以也可以怎么着。对,也可以快创建快捷方式,放到某一个地方是吧,然后呢,两个目录,然后连在一起的,你放到这个目录里边,它也跑到那个里边,也可以干什么,给他做一个文件上传的一个什么功能,让你上传上去。他写好配置文件之后,一点这个就让他上传文件,上传文件上传到后台了,我们是不是Java代码想把它放到哪放哪就这啊这些都是可以的是吧,想让咱放哪儿放哪儿,当然咱们不做那么复杂了,我们这个地方就让他题目放到这边了。好,这个地方,那我这个地方创建一个pro外文件。然后个右键fire new fire文件叫配置文件了,然后呢,这个地方叫,然后呢点叫pro配中间,这样的话大我这配中文件就创建好,创建好之后让用户往里边填一个阶段名字对应一个VALUE61个阶段名字对应一个可能性,一个阶段名字对应可能性就行了。
38:19
知道吗?好,这时候我们说,那他到底有几个阶段,这个地方当然我们就自己提供了,当客户他肯定也知道了,分几个阶段,做需求调研的时候已经约定好了,知道吗?所以那我这个地方我就直接写了啊,这几个阶段,然后呢,我就查一下,把所有阶段的名字查出来。然后呢,在这个去接这个名字查出,那就是那写操入语查吧,然后呢select的形,然后from从哪个标准抄对数据字选值这个表格上,然后呢叫value数据然值个表格上知道吧,那查的话数据自然值,我们说所有下列表数据都在这边,我要查什么根据什么去是对根据这个Type Code等于谁啊ste是不是这样的,然后呢啊这个地方我一查的哈,所有阶段都在这边了。
39:09
所有阶段的,这是阶段名字,但然它是不是没有排序啊,最好排下序,这样的话你种啊每一个阶段对应可能性是多少,这样很妥写排序order by根据什么排对order number,然后呢,这个地方一运行再看排序了,然后呢把这阶段名字拷过来就行了。拷贝选中上面这个CTRLC拷贝过来,然后把它放哪就放到这里边就行了,这样一个阶段对应一个可能性就行,这些都是K,然后呢,这个地方来对应可能性去了啊来对应可能性吧,那假如说咱那这个假如说假如说我们是客户了,那客户根据自己的经验来这个什么,根据自己的经验,然后呢,在这个填上每一个阶段对应可能性,假如第一个阶段可能性10%,这对个,然后然后第二个阶段20%,当这时的用户自己根据自己的经验填到,诶你说老师怎么没有百分号,当然这种普的配容文件里边最好不要有这种特殊符号,特殊符号将来解析,到时候这种普号文件有的表示不了。
40:15
解决了用了暴错,那你说那他那他说百分号以后显示的时候怎么办。对,取出来之后拼起来就行,就最好不要有这种特殊符号,知道吧,这时我们要这样的好,下边大我们这个地方来,假如这个地方30%,嗯,这个地方来个50%随便来了,这个地方来个70%随便了,这个地方假如说90%,这个地方成交了100%,然后呢,这个地方丢失了零,对吧,然后呢,这个阶方丢失了零,这样行,这样的话,咱这个配置文件我们提供好了,按理说这个配置文件应该给用客户约定好由他来提供的,知道吧,他来提供给我们上传到某一个地方就行了,我们想放到哪就放到哪,就这意,但我们这个地方就放到这儿了。
41:03
好,这是我们说这个配置文件我们就提供好了,好,然后呢,大家看这个配置文件提供好了,那下边我们就可以往下边进行下边这个流程了。下边这流程怎么怎么进行,用户就可以每选一个阶段的时候向后台发请求,我们后台CTRL接到请求之后,根据他选的阶段到配置文件里边去解析,看看这个阶段对应可能性是多少,然后呢,返回的前台显示到这儿,他每选一个阶段找一个可能性显示出来,每选一个阶段找一个可能性显出,这样的话这个可能性就是可配置了,就这个意思知道吧,所以下边我们就准备来做这个功能了,做这个功能他迁到前台和后台其实是一个小的流程,所以下边我们就准备来给大家在这个流程上面继续来挂这个小的流程。好,下面我们来看看,那继续来画我们这个创建交易的这个流程,上次我们说用户已经来到这个创建交易的页面了。那假如说这些数据他都填完了,下边就要选阶段了,一选一个阶段,这个地方我们就这么这个流程就发起了,我们继续在客户端里边来画这个流程,然后呢,这个地方来个叫用户选择阶段,用户选择阶段选择阶段那么他每选一个阶段就应该向后台发进流。
42:22
然后根据他选的阶段解析普尔德克人验得到有可能性显示出来。那我们说他需要后台发解,那我说后台得提供CTRL来处理了,那后台提供ctrler,下边继续再换一个环节CTRL。那这个是创建交易的,所以这个地方那肯定是交易的CTRL,在交易的CTRL加一个方法,这个方法就是根据选择的阶段来去获取一个可能性去知道吗?所以说那这个地方在我们上次创建的CTRL基础之上加一个方法来接收并且处理这个请求,他每次选一个阶段都应该向他发一个请求。所以我们这个地方来。
43:02
用户每次选择阶段。然后呢,向这个controller发一个请求。然后呢,向他发一个请求,发一个什么请求,获取可能性的一个请求,所以我这个地方给他写一句话来获取可能性请求,知吧知道吧,每选一个阶段都相互得完全,大家想想这个请求同步的还是异步到,是不是异步到不跳转页面还是在这个创建页面上来进行的,所以它这个异步请求。那一步请求大纲需要提高什么参数?对,是不是他选择这个阶段啊,这个阶段名字还是阶段ID名字,对,因为后台controller解析pro或软件获取这个阶段对应可能性的要需要这个阶段的名字,所以那我这个地方叫stage,它的名字叫value,知道吧,来把这个选择的这个阶段的名字,然后呢发到后台,然后呢这个地方来向他发一个群,然后呢,这个CTRL接收到请求之后,他的职责三个职责,第一个职责接收请求有参数获取参数,获取参数。
44:20
然后获得了只有一个参数,不用封装,这样就行了,然后他的第一个职责就完成了,第一个职责完成第二个职责,第二职责处理业务,处理业务干什么,就是我们这个地方了,后端提供说接收到请求之后拿到参数了,然后呢,解析pro的配置文件,根据阶段获取可能性。那解析pro配置文件需要访问数据库吗?不需要,不需要,这个地方其实你就不用调service了,不用调map了,因为我们的service和map主要是访问数据库的,所以它什么处理这个数据不用自己什么不用调service,它自己就可以什么解析了,那在这里边干什么?解析配文件解析叫proper,然后呢,配置文件解析proper文件,然后呢,根据阶段来获取可能性,到那配置文件里边获取可能性啊,这样就行了。
45:21
然后获取了之后,那就把这个可能性直接返回到前台就行了,它的第数据就拿到了第二个值责就完成了第三个值道,根据解析的结果,嗯,根据解析哎结果,然后呢,来生成响应信息,把这个响应信息返回到前台,其什么响应信息,就是把那个可能性返回就行,所以把它返回到前台就行了。接下来这个地方。这个地方来向他反映这么一个响应就行了。这是一个响应,这是响应,那大家看这个响应信息是个什么样的信息。
46:06
对,从格式上来讲,前面发的请求,异步请求阿贾克斯发的,那响应信息回答阿贾克斯,阿贾克斯能解决数据是不是阶层字符传,对阶层状阶段字符传里边包含什么?那你看前台需要什么,你选一个阶段前台需要什么。对,就是那个值,对,就是那个可能性那个值,其实大家看这个这个阶线字串呢,它是最简单的一个阶算值,就是把那个值叫to,把那个值返回就行了,它连个对象都不是,对象还是个大括号呢,他连个大括号都不是,它就是一个值,知道吗?那老师这个值是不是阶段度数,是这是最简单的阶段度数。然后它更不是数组了,它就是一个值,所以就把这个值以阶近字符串的形式返问前台,那返问的前台之后访到哪了,阿贾格斯回调函数了,阿贾格斯回调函数拿到这个什么,这个杰森自数状之后,把这个值直接显入到输入框,所以这个什么前台拿到之后,然后呢,解析杰森其实这个接就是一个值,那就直接把这个什么possibility这个可能性,然后呢显示在输入框可能性的输入框中,这样用户就每选一个阶段就看到一个可能性。
47:24
知道吗?每选一个阶段就可能有可能性,这时候我们这个流程知道,所以这时候我们说这个流程我就设计好了,当然这个流程比较简单,他不访问数据库,就相当一个K。啊,所以大哥,那这个流程我们就涉及。
我来说两句