00:00
好,来看我屏幕啊。我们上午的时候呢,我们把这个我们做了一个优化。我们优化的效果是以前这里面有五六个都是和flu相关的这个操作的,我们把它合并成一个是吧,同学们我们做一个合并。再来。下面呢,我把这个项目呢,我把它复制一份。好,我把它改成PROJECT14。Fruit一点酒。好MVC,那么我这边写一个叫。MVC02吧。啊,或者写个MVC。那我把它拷贝一份啊。然后呢,把这个文件把它改一下。点击。那么把这个project把它加进来啊,稍等一下啊,Project model好在这。
01:02
幺四,然后把这个是吧,这里把它加进来行点一下应用,然后呢,你这个artifact如果有多个啊,大家容最容易混淆了。所以你就直接删掉,只保留一个RT。这是没有问题的啊。咱们就只用当前你想写哪个项目,你就只创建一个artifect就可以了。甚至于这个model,我的项目里面有这么多model呢,我当前用的是PROJECT14这个model,那么其他所有的model,除了这个project这个啊零一直到幺三全部都删除都没问题。现在呢,我已经把这个复制出来了,那下面我想做的功能是什么呢,同学们。我们回到我们早上所画的那张图。好,我们回到这边来。我们把我们把这个图打开。正常情况下啊,我们之前正常情况下我们是福。对应的会有12345,会有五个是吧,同学们。
02:01
那么我们做了一个优化,我们优化中只有一个。然后这个里面有五个方法,我们分别用Switch case来进行对应。大家帮我想一想。第一个问题是这个float这个当中,Float里面它现在有五个方法,如果有十个方法,12个方法,15个方法,20个方法,我的Switch case是不会很长啊。我的Switch开会比较的长。好。再来。所以呢。我们要对它再次做优化,你看啊,这边有Switch case。我这边只写了12345,我只写了五个,那如果有20个,你这随机开始就是太长了。啊,早期的时候,早期的时候我做过一个项目,一个里面的代码,一个里面的代码五六千行,那是非常正常的事情。所以你就不要指望通过这个时这个这个滚轮啊,这个滚,你通过鼠标滚轮去滚动去找你的代码,不可能的,你滚了之后,它就一行一行的去去滚下去,那你5000多万你怎么滚没法滚。
03:10
啊,我们早期用的是eclipse,只能按快捷键CTRL加L,就是CTRL加这个快捷键是输入行。是吧,你要定位了多少行嘛,比如说我定位了三十五行,敲回车,是不是就定位了35行了啊,只能通过这样的方法,还有CTRL加F查找。根据你的关键字,关键字去查找。啊,你没有办法通过这个滚轮滚动去去找你的代码,因为这一个斯莱特前前后后所经过的程序员,那可能有好多呢。啊,这个代码有可能是这个类创建的时候,可能是十年前创建的。但是我这个系统在一直在维护着。啊,一直在维护,那大家会觉得老师那十年前这个技术不就老了,不就应该早就淘汰了吗。大家学习者和开发者是不一样的,同学们,我们企业当中技术人员在用技术,当然了,当然了,我们还是要保持,我们每个程序员还是要保持自己技术的先进性,还是要稍微领先一些的啊,但是呢,我们企业当中,我们在技术选型的时候,并不是哪个技术越新越好,不是这样的,同学们。
04:14
我们只有两个两个准则。第一个准则。这个技术比较规范。这个技术比较稳定,这个技术它可查阅的资料比较多,也就是当前这个技术它的生态比较好。啊,它的生态体系比较好,这是第一点。第二个准则就是我只用我们公司擅长的技术。不擅长的技术,一般我们不太会用。啊,因为你擅长的技术能够提高你的开发效率嘛,你用一个不擅长的,那经常出问题对吧,那你这个一修复的话,这个成本就上去了。啊,所以呢,大家不用去去去觉得好像这个这个大家以后工作是吧,你这个项目我感觉技术很老,那你就会觉得学不到东西,不是这样的,同学们啊,其实不是这样的,能不能学的东西和你这个所用的使用的技术其实并不是完全对应的。
05:03
啊,其实并不是完全对应的。所以这个大家不要小看里面企业当中的我们每一个项目,即使这个项目所使用的技术再老啊,你千万不要轻视他。一个系统,其实技术,其实它不是放在第一位的,而是它的业务是放在第一位的。现在因为我们是学习嘛,所以我们的业务比较简单。啊,以后我们做工作这个开发的时候,你这个这个这个需求文档动不动两三百页,三四百页一个模块,可能搞个PPT,就搞个100页的PPT。啊,你这你这你这两天这三天,这一个星期你啥事也别干,就光看PPT。啊看PPT,目的就是把这个业务需求。把它烂叫烂熟于心。烂熟于心之后,这个模块的数据库设计就交给你来,交给你来负责。啊,所以说其实大家现在学习你会觉得这个技术很困难是吧,到工作这里会发现,其实技术并不是最可怕的,最可怕的是业务。啊,业务其实是最可怕的技术,你迟早迟早会掌握的啊。
06:03
行,我们抓紧时间啊,这个不多说了,抓紧时间。呃,回到我们刚才那个图啊,我们说过这个里面Switch case会比较多。因此,我们要来想办法,要来做优化。我怎么来做优化呢?这是我的一个service方法。那么这里面的case大家看一下,如果你这个这个字符串,如果你对的是index,我的就是D方法,如果你对应的是A,我就是方法,如果你对应的是DD,我用的就是de方法。哎,他们名名字我故意写成一样的。所以下面我要对它来进行改造,代码其实比较少啊,代码量其实比较少,我们来看一下。This表示当前对象。Get across?当前,我获得的是当前的一个大对象。点get declared method。叫method获取所有的方法,那么下面还有一个get method。
07:05
啊,我也可以根据它去获取。也没问题,或者你或者你根据上面那个,然后再通过负循环来获取也可以。好,我们这个获取method。Methods,这个是获取什么,当前。获取。当前实力啊,当前类吧,当前类中所有的方法。获取当前类当中的所有的方法。所以大家想想我当前这个。这里面是不是有好多的方法呀。我们有很多的方法。那么你这边有个叫operate。下面我就在这边for循环,For method m冒号method循环。子俊。Method name等于M点是不是获取方法名啊?获取方法名称。
08:01
然后。If operate.equals。Equals method name。表示你的operator正好和某一个方法名相同,是吧?表示。找到。找到和operate同名的方法。那么通过反射技术调用它。通过反射技术调用它,也就是m.in work方法来进行调用。Invoke调用哪一个实例?就是当前这个实例参数是什么?我们的参数就两个,Request response。你看我们下面所有的方法。是不是每一个方法是不是就两参数啊,Request和response。所以我就把它传进来了,这样就可以了。那么我们对它进行开启一下。好。OK。那么下面这个Switch我们就可以不要了。啊,这个Switch就可以不要了,一直在这个地方,这边有个default表示没有找到。
09:04
好实录,实录呢,我们可以把它放到。负循环的外面。否则我正常情况下,我在这个地方,我就写个return。表示在那边就终止了嘛,复循完是不是就终止了呀,表示一记住if我已经找到了,执行完之后我就。如果你能跑到外面来,那我就思路抛个异常,叫opera值非法,那么这个Switch我就可以把它删掉了。山。删完了。啊,就是这样的。那么现在我们来试一下,看看对不对。大家想想这样这么去改的好处是什么?我这边的方法如果有很多,我还要再担心吗?你有十个,20个,30个,是不是代码还是一模一样的。根本不用管。我们来试试吧,看看他行不行。好,我们部署一下,这个不要了,删掉。IFT14。
10:01
好,把这个删掉。应用一下。然后这边是福点度没问题。Redey update应用OK。这个没改是吧,幺四是吧,同学们。我哪边没改的,大家要及时提醒我啊,省得这个还得再再重启,浪费时间。我们来看一下啊。我们来看一下啊。好了,你看页面是还一样可以啊,一样能够查询啊,添加这个肯定也是可以的,就这样子说明我们的代码是没有问题的。
11:02
这是我们当前所做的这个改造,代码量其实不大。只不过呢,对于大家而言,第一个大家要去理解,第二个大家有点心理上有点排斥。只要我一提到反射大家就排斥是吧,感觉这个代码有点麻烦是吧,多看几次就好了。啊,多干几次就好了。就像这个这个你的女朋友一样是吧,你相亲的时候,你女朋友一开始也看不上你是吧,这个他的父母总是劝他,哎呀,长得丑没事,人好就行是吧,你多看看你就适应了是吧。多看看你就顺眼了啊。OK,这是我们当前啊,当前我们所对这个做的改动。呃,这个改动虽然比较小啊,但是呢,我就不再继续在这个上面改了。我需要对他的下一个版本再做一个改动。好,我拷贝啊,把它停掉。交费。Project药物。好,MVC,我这边写一个叫。
12:02
Dispatch。好了,我重新拷贝了一个。把它粘起来。好,Model,我把他加进来。Import model15。应用一下riftx,把这玩意删掉。重新加一个。药物。同学们。再接着看我屏幕啊。现在我有一个float。现在我有一个fruit。我把这个图呢,我把它重新再来画一遍。这是我们的客户端。这是我们的服务器端。
13:03
那么我有一个叫flute。叫fruit。我们写在这儿。叫float,那请问一下同学们,大家后面应该还会有其他的,比如说user。比如说我们还会有其他的,比如说all的订单相关的。Order。可能还会有其他的,比如说商品等等等等。把它写在这。产品相关的。那么每一个它里面又会有很多的方法吧。每一个split里面又会有很多的方法。一个稍等一下啊。Can you see can you。
14:01
站过来放到这。那我每个每个下面这个我就就写四个吧,写多了也挺烦的,CTRLCCTRLV。好,把它放在这。那这就四个。所以呢,我这个里面,我根据我的operate不一样,我就保证我调用的是不同的方法是吧,同学们。用的是不同的方法。这是我们的fruit。那其实呢?我们的user,它内部是不是也会有这些方法呀?把它放在这。他也会有这些方法,我们的order是不是也会有这些方法呀?也会有。包括我们的他也会有这些方法。难不成我的flu里面我需要写个反射啊,User,我再写个反射,我再写反射。
15:04
下面我要对我当前这个代码呀,我来做个小的更改。我要来做一个小的更改。我在这个前面看好了。我在这个前面。我加个东西。这个叫。这是一个什么呢?这是一个核心控制器,或者我们称之为叫中央控制器。或者称之为叫核心控制器。我们所有的请求全部交给他。所有的请求全部都交给他。交给他之后。他根据我们用户的请求不同,他负责去对应到不同的后面的float select上面去,或者对应到user select上面去。或者对应到all select上面去,或者对应到product上面去。
16:05
根据我们的请求不同,定位到不同的Fla,然后再定位到不同的里面的方法上面去。下面呢,我把这边的我给它修改,我给它改一个名字。我的名字不要叫福罗德斯。我把它划划掉。我改成叫flu controller。其实不改名字也没有关系的,只是现在呢,我要需要给大家慢慢的,让大家去慢慢的去适应,所谓的叫CTR了,叫控制器。但是我们还没有介绍MVC这个概念,不着急的啊,不着急的大家先慢慢的先去接收了。我把这个图把它保存一下。下面我们需要把我们的系统改成这么一个架构。
17:03
好了,如果我需要改成这个架构呢?那么需要用到一些额外的知识,我们需要用到一些额外的知识。首先。我们在这个当中。我在这里面。我在这个当中,我来新建一个。我新建一个类。这个类叫dispat。这个类,我让他记成view best。我让他继承,然后这个当中出现方法。OK。这个里面出现service方法,那么获取参数呢?呃,不叫设置编码呢,我就把它挪到这边来了。好,所以这个里面的设置编码。
18:00
我得把它放到这边来。行吧,同学们。放到这边,因为它是它是最前面的。看着图,它是不是在最前面啊,我放在这个里面。好,这个叫request。Response。这个。我怎么去给他做配置呢。外边不来。心。我这边前面加的是个通配符星,表示所有的,只要你是以点度结尾就行,那前面我没有加斜杠啊。这个地方前面不要加斜杠,明白吗?这边是不需要加斜杠的,只要写个心就可以了。表示他拦截所有一点度结尾的请求。拦截所有以点度结尾的请求。好,再来。我们再继续。下面一步我需要怎么做呢?我这边是新点度。
19:02
那么我到底这个心,我实际发请求的时候,这个心到底是什么?我可以在request里面是可以获取到的。request.get。嗯,我看一下啊。叫gate。稍等,Get so light。没有。没有。我记得有个叫pass啊,我只记得这个单词,Pass没有in in粉也没有,奇了个怪了,为什么没有呢?哎呀,真是的。这个接口它是个负接口,它下面有个子接口叫http request。点进去。看到了吗?它是个接口,它下面有个子接口叫http request。刚才我重写的时候选的这个方法选的有毛病啊,点进去再看一下。
20:04
看到了吗?他是不是记得这个接口啊,这个叫HTTP基于HTP协议的啊,所以说怪不得点不出来。稍等一下啊。把这玩意儿删掉,重新再选一个,有两个service方法。看到了吗?下面这个是不是HTTP啊,怎么选到上面一个去啊,选他选他就没有问题了啊。如果刚才你不选,你这么去修改也可以的啊,没没有关系的。然后把这个设置编码拿拿进来,然后request.get我只记得一个叫pass,我记得。Pass in还是叫pass,记不清了。啊,这个叫男人的第六感,告诉我好像是past。那就咱们用一下pass,我们把它打印出来,同学们我打印出来给大家看一下啊,Pass看这玩意儿到底是啥。这个叫点。
21:01
行,我们先把它先把它先启动起来。嗯,当前应该是幺五。我们这个地方福禄点读,我们就就别叫福禄点读了,我随便写一个哈路点读行吗?同学们,你叫福禄点读这个拦截就有点小问题啊。删掉。点击它,然后幺五。应用。OK,启动一下吧。我们看一下这个pass到底是什么。他我想要获取的是什么?假设我们请求的是hello点镀,我希望这个select pass叫叫什么呢?叫杠hello点。我通过这个杠哈点度,我就能获取到其中的hello,然后这个hello我就想对应到hello controller上面去。这是我的一个思路,不着急啊,先从第一步开始,看得到的是不是这玩意儿。
22:03
好了,是不是叫哈路点镀啊,那我们看一下打印出来的是不是叫哈路点多啊,斜杠哈路点镀,哎,第一步得到了,这叫pass。拿到这个pass之后。我们这边写一下啊。假设。121是。啊,加车要是这样的稍等一下啊。从这到这,CTRLC。UV把它放在这。那么。那么。Pass,是。就是这个好路点路。我的思路。是第一步。第一步,我们把杠哈点住,先通过字符串截取得到哈。这是第一步。那这么的截取比较简单。这个我就不打印了,删掉。
23:00
Pass。点啊,现在就看不懂了,现在顶多你不知道我在做啥吗。但是我觉得API还是能看得懂的嘛。是吧?就是你可能不知道老师你到底折腾啥是吧?Pass,把它放在这。请问一下萨巴斯从一开始截取,请问我是不是把斜杠截取掉了?是不是就只剩下杭州点镀了?剩下好多点镀,我再把点镀。再把点度再截掉,只只剩下这个寒露。Solid pass.last index of。最后一个点度。啊,找到它的索引,也就找到这个点的索引。Last。Do index do指的是点的意思。然后solid pass等于pass.subst string从零开始,一直到last do index是吧?现在我们再把这个solid pass把它打印出来,试试看这玩意儿是啥?我这边写个123。
24:00
看一下他打印出来到底是什么。好,我现在我不重启,我试试看他能不能,他看他能不能更新过来啊敲回车。不行是吧,没有打印123是吧,同学们刷一下吧。我们再来看一下啊。大家一定要坚持一下,把它看下来啊。现在他已经打印出来了,我们看一下。是不是能得到哈啊行,这样我就能得到这个哈了,好,我的目的第一步我就已经得到了。第二步。第二步。我要让这个hello能够和hello controller能够对应上,Hello和hello controller能够把它对应上。
25:06
这是第二步。那么这步我怎么来做呢?这一步我怎么来做呢?我怎么把这个hello和hello CTR能够把它对应上。现在呢,我先回到我的项目里面来,那这个这边的这个名字啊,我们最好把它改一改。现在我就把这个名字我就不要叫了。我就改成叫controller。然后这个叫controller行吗,同学们。当然,名字不改其实也没事儿啊,但是咱们最好还是养成一个习惯。好,我们来修改一下啊,他这边提醒我有这么多模块里面都有这个呢,你到底想改谁。不能肯定不能多改是吧,肯定不能多改啊,有这么多的。Do you want tolame the whole。Package or redirect?
26:03
你想修改整个包还是只想修改文件夹,我们应该是修改怎么样?我试试吧。我们修改这个叫package还是文件夹?文件夹吗?随便选一个,我就选package。我们试一下啊C了。他的那个叫preview预览。那你看一下是不是所有所有的里面是不是都要改啊,0910111,那说明肯定就不对。是吧,同学们取消掉,重新来一次,选中它奥的shift的R。这次我们改director,是不是同学们就选这个?那么我们把它改成controllers。好,再来preview。我们看一下。是不是就就这一个对吧,就这一个就就只需要移动它一个那行度。没问题了吧,那其他的项目是是不是就不影响了,我们其他的项目里面打开看一下。
27:01
弗洛特,你看苏莱还在啊,是不影响的。好,今天把它变过来了。再来。你这个flu,我们是不是也要重命名一下,选中它奥西的R。重命名一下大家,大家的快捷键应该是CTRL还是shift加加加F6啊。大家自己试一下啊,我记不清。叫controller,我们把它改一下。View,我们看一下就这一个点,Do。行,改过来了吧,叫float CTR,我已经改过来了。再继续,我们再继续。后面这边有继承z base。这边有继承view。啊,这个我们就暂时先暂时先让他继承着吧,啊,没有关系的,然后这个外表来看好了。三。不要了。就直接是这样的弗洛德根了,虽然他继承他,但是他已经不再是一个斯莱特了。他就是一个普通的类。
28:04
非得说他不普通,是因为他忌惮它,用它里面一些特殊的方法,后面我们还会再去优化,还会再改的,不着急啊。下面我怎么做呢?下面我需要怎么做呢?这个Dis despite,我们刚才已经从杠hello点已经得到了hello,下面我们要把hello和hello把它对应上,怎么对应呢?我们要我们要在一个文件当中对这两者的对应关系做一个说明,做一个约定。好,所以呢,现在我来写个配置文件。我们在配置文件当中来对它做一个说明,就在SC下面注注意了啊,我选中的是src右键。六我们列出一个file。这个文件我称之为叫。Application。XL。叫application.xl。这是个点X。
29:05
好。我想给大家讲这么几句话,HTML叫超文本。标记语言。XL是什么呢?X叫可扩展的标记语言。X表示external可扩展的。卡language标记语吗?所以我们可以认为HTL是XL的一个子集。因为我们HTM是不是也是一个一个的标签啊。XL本身就是一个的标签,那么X比HTML的这个区别是什么呢?它是可扩展的。什么叫可扩展?我们现在进来体会一下。
30:02
XL包含三个部分。它包含三个部分。第一个部分。XL失明。第二部分。叫DTD叫文档类型定义。文档类型定义,Type叫文档类型定义。第三个部分。第三个部分叫XL正文。那么我们一个XL文档,我只要有一三两个部分,其实就可以了,第一个部分必须要有,第一个部分必须要有,而且。而且声明这一行代码必须在XL文件的第一行。他前面不能有任何内容。所以我要在这边写一个怎么声明呢。用问号,问号。
31:01
XL危险等于1.0。等于UTF杠八完了,这是固定写法。X的一个叫X声明的一个固定写法,这就第一部分,我就把它写完了。中间的文档类型定义大家可以先不用管,再往下我们看X的正文。看正文部分,我怎么来写呢,病理。老师,你为什么写个病字?这个病字代表什么意思?我瞎写的,你想写什么标签就写什么标签,A标签里面有B标签,B标B标签里面有个C标签,标签外面还有一个I标签。二标签这边还有个借标签,你看他报错吗?他不报错,所以我说的XM,它这个叫可扩展的标记语言,能听懂吗?它是可扩展的,那行既然它是可扩展的,我写个标签叫BS没有问题吧,那么现在我再来解释为什么我取名字叫BS。病,我们称之为叫伽巴病。就是我们的Java Java并我们加法里面的对象加个S嘛,那不就多个Java并对象吗。
32:03
没问题吧,好,所以我需要在病这个标签里面,我的想法是我在里面去描述一个一个的病。第一个病,我取个idd,我称之为叫hello。Class我称之为叫com.at硅谷点后面我就不写了,然后hello ctrl,那么我就应该把它配成这个样子,我可以把它写成单标签。那当然了,对应的我们当前这个项目里面,这个不能叫hello,这个得叫fruit。后面这个我得把它换掉,我得叫float CL是吧,同学们。好,所以点float.controller controllers.float controller是不是同学们?我就把它改成这个形式了。那么这个标签就用来说明ID等于fruit和class和这个类进行对应。将来你给我发请求,给float发请求,就表明需要通过float controller来做处理。
33:00
就是这个作用。这个冰标签。这个病标签的作用是?将来pass中啊涉及的名字。对应的是flute。那么就。要float。Controller这个类来处理,能听懂我的意思吗?只要你的pass,咱们干的不是有pass嘛,是吧,涉及到这个名字对应的是。那么我们就要找float control来进行处理。行,我就写了这么一个病。那下面我们得再继续。好,我把这个视频先中断一下啊。
我来说两句