00:00
我们来编码实现,那编码实现再看这个地方牵扯到什么代码需要我们写的,对CTRLLJSP是不是这两这两代码就需要我们写啊,对这个JSP虽然美工已经写好了,但是他写的是静态网页,对HTML是不是我们得把它改成JSP啊,对,那这样的话一个CTRL,一个JSP。这两个代码需要我们写,这边不用我们写,用户输地址,然后访问网页,浏览器自动显示,所以我们只需要写这两个代码就行,那写这俩代码先写哪一个,后写哪一个呢?是先写JSP啊,还是先写controller啊,对,包括以后可能还有service,还有map呢,先写谁啊。对,按流程,按按流程先下来。万一还有service呢,还要调service,还有map呢?调map先写谁啊?对,先写被依赖的代码,代码一个流程里边很多代码先写,哪一个代码先写被依赖代码,被依赖代码什么意思?是说被调的代码先写来,你比如说大纲,我们说我们将来我们代码分层的原理是么?客户端调谁啊?调CTRL是不是这样的?CTRL调谁啊?对调service service吊谁啊,对调这个map知道吗?
01:25
那是谁是最被依赖的?买先从底层写,底层是最被依赖的,然后呢,再往顶层写,知道吗?就为什么先写被依赖代码,你想啊啊别人掉他他如果还没写呢,别人咋掉,就你写别的类的时候你吧,你他掉那个类,那个类还没写呢,你咋掉,你想测都测不了知道吧,那你说老师以前我们都先写页面,再写CTRL,再写到位,那你以前做的做的代码太简单了,业务太简单了。所以你可以那么写,现在我们是吧,做项目开发的话,先写被依赖代码,所以大家要习惯这种开发流程,我知道大家可能一开始做的话不太习惯,但是你必须习惯这种开发模式,知道吧,先写底层,再往再写顶层往底,底层底层往顶层写。
02:17
而不是从顶层先写页面,再写一看,用到CTRL赶紧写CTRL,然后看到CTRL掉sorryl的赶紧写sorryl组,那这样的话你会不停的打断思路。这样的话写的话不不不科学,你以后写的话比较慢,不停的返工,为什么不停的返工,因为你前面都已经掉了,然后后边你才做这个实线,你要做实践管理,就调度不一样嘛,你回过头来改调度代码,所以这个地方比较麻烦了,所以大家要习惯这种开发模式,先从底层写,那我们这个地方先写谁呀,从底层往顶层写,先写谁,这俩谁是谁是最靠近底层的。谁谁呀。
03:00
对,是不是cler,对cler我们说越靠近什么数据户的,越靠近底层的,越靠近用户的,越靠近顶层的知道吧,所以先写C,所以下边呢,我们在我们这个工程里边要创建这么一个CTRL类,在里边加一个方法,一访问它就要跳转到项目的这个首页去,好,下边我们来写这个CTRL了,下边我就要写了,嗯,然后写的话大纲,那写的话我就在这个什么是不是在这个Java这个目录下去写啊对,这是写我大名了,那这个地方我们得写什么也包名了,那这方写报名右键,然后呢拍黑是吗?这个包名命名的时候跟我们以前命名一样,一开始是啊,对这个这个公司的域名倒过来写是吧,后边的是啊,对项目的名字是吧,再往下呢,是不是代码分层了,你写哪一层让么写个包就行了,现在我们写的C下边这个包叫什么?
04:01
叫叫ctrler或者什么,当然我们说CTRL属于外部层的代码,你也可以前面加一个we部ctrler,那外部下面除了CTRL还有还有别的还有啥。CTRLL是控制器是吧,还有啥还有拦截器是吧?以后我们有可能写写拦截器呢是吧?啊对,所以说大概我们说叫intercept是吧?啊有可能外部下边还有intercept,但咱们这个地方只有一个CRL,我这个地方先写对吧,外部下边有一个CTRL,然后呢,我这个地方大上一回车,大上这个包我就创建好了,然后呢,这个这个包打上我就创建好了好吗?这样。对,然后呢,在这里边我就可以写我们的类了,在这边写类,那写这个类,那我们这个地方来一个叫什么new,一个Java class,这个类名咱们都已经设计好了,就叫index ctrler,然后呢,Ctrler这个类,然后呢,一回车大上这个类就创建好了,这是CTRL类,这都是按照设计来写的,不是说一拍脑子我跟你说我想这么写就这么写,他不是这样的,都是需求推动你写的,你不写都不写知道吧。
05:09
好,那这是一个CTRL类,从语法上来讲,我们都是基于注解编程的,是不是得给它加一个CTRL注解呀,对加1CTRL注解对像这些,那么然后呢,这个地方来个肯多少注解。那我们说基我们都是基于什么注解编程,要想让这个CTRL注解起作用,是不是得让spring m VC去扫描这个包,对,那spring m VC去扫描这个包,那来找找C的配置文件扫描这个包,那这个包我已经搭建开发环境,以及这已经写到这了,所以那这个么,我们就这这个包已经扫描了,扫描不用管了。然后呢,在这个类里边加方法就行了,加个方法,那在这里边我们准备加一个方法,那加一个方法干什么?就一访问这个方法,将来要跳转到整个项目的首页去,那下边我写这个方法,这个方法写的时候是个CTRL性的方法,一开始叫什么,它的访问权限叫什么?对public布雷,为啥怕布雷个。
06:11
对,防火权最大,为啥最大呀,我行不行,对为啥不行啊对,那你看这个方法将来谁来调是吧,谁来调他。不MVC那个核心控制器掉了,核心控制器掉,核心控制器给你这个,给你这个类包名在一块吗?对,没有,肯定不在一块,不在一块要想让他掉,是不是必须得public布,对帕,因为他俩也没有继承关系,是不是必须public布,如果他俩不在么?如果不是public布克,那么他俩也没有关系,那么将来那个核心控制器掉,它不能掉。不能掉,那将来是吧,接触到请求之后,他就调不了这个方法,那这个时候是吗?想跳转跳转,那明白这意思吧,对,这些都是你以前学的语法是吗?所以你要想一想为啥这么写是吗?你不能说那老是别人这么写,我就这么写,那别人写的就对吗?是吧?那别人写的也不一定对呢,对,你不能光背别人的代法是吧,你得自己能想,想着想着就写出来了是吧?好,这是我们这,那这是帕布,然后呢,这个方法给他一个返回值,返回值什么类型的。
07:18
对,两种方式都行是吧,他将来要跳转页面Mo view可以,对string也可以是吧,反正总之将来什么不管通过string还是猫Z,它要跳转哪个页面,是不是把那个页面自源路径,然后返回就行了,对,可以设置到这个什么,可以直接访问那个路径,也可以直接设置model and view里边,当然我们这个地方为了灵活旗键的话,一般用spring更灵活一些。啊,这样让人挖到不更就更麻烦一些,你得创建包维对象,让病人把你的什么路径设到里边,所以比较麻烦一些,所以我们这个段就访到一个S下边这个方法名,方法名你随便起了贱名之意,它要跳转到首页,我就叫index了,这是首页,然后呢,这个地方这行了,好这时候我们说到这样,然后呢,再看这样我们就可以了,可以完了之后,那他这个ctrler层的方法,将来他要处理客户端发过来请求,那他发他要处理客户端发过来什么样的请求,对是不是在上面给他分配一个URL,那将来用户一访问这个URL,由他来处理,那直接调他就行了,那怎么给它分配ul,对这快的卖品,然后呢,在这里边给他一个,给他分配一个ul就行了,是吧,那这个URL大看哪一个URL呢。
08:38
对,那你看我们刚才访问一访问他报异常了,其实就是这个U是不是这样的啊对一不是一访问他报404,就是我们没找到资源,没找到资源我就让他找到,将来他一访问这个UR就来执行我们这个测略,你就就就来执行这个停车方法,诶这样不就行了吗?知道吗?好,这是我们说的这样子,这其实就是我们那个欢迎页面吗?就这个访问这个资源吗。
09:04
就访问这个,按照这个协议访问这个服务器上面的这个端口上面的这个项目的协账这个资源,知道吧,好,这是我们说的这啊,那你说大看我说万一我以后什么这个项目上面我还有别的资源,是不是将来再往后边再加别的资源去啊,别的资源那再加,不管访问多少资源,只要访问这个项目上面的这些资源啊,是不是前面这些都得带这些东西啊。都得在这东西spring这玩吧,对spring Mac说了,既然所有的资源都得带他干什么?那大家都别写了是吧,大家都别写了,可以省去,将来他只要访问你这个项目上相所有的资源,只需要什么,访问所有的资源,前面都只要是前面是带这些内容的,他都找你这个项目,找到你这个项目呢,再去找这些资源。
10:03
这是资源的名字,然后呢,大家看找资源的名字,他只需要找后边这些就能知道掉哪一个肯出找方法了。知道吗?那你说你说老师,那我前面都带上行不行。都带上行不行?对,都带上是不是很麻烦啊,是不是很麻烦,那很麻烦了,死不MC说了,他就是让你省去,就为了编程人员更简更简便了你,你说我是老师,我偏偏带上你带上反而错了是吧?因为他规定规定这个UR这些前面这些东西都可以去,而且必须省去,大家明白这个意思,不知道那有老师我我不怕麻烦,我就带上他。那你都带上他对于他框架而言,有的人想省事,有的人不想省事,就是那他框架在将来解析的时候,他到底按贷还是按不带呢。他才做两套程去,那两套程序他的框架最重要,太庞大了,所以他压根说什么,不管你想不想省事都省去,一律省去,不省去的人反而错了,大家明白这意思吧,知道,所以说大家以后以后所有的配给,所有的CTRL方法分配UR的时候,前面那些都可以省去,就从项目名字后边那个斜杠开始,然后呢,往后边找这个这个项目下边的一些资源就行了。
11:30
大家明白这意思吧,就这这个斜杠就代表刚才说的那一块内容。它就代表应用的根了,就代表应用那个项目根下边的那个斜杠,它就代表应用的根,就这个杠知道吗?就是按理说,那按理说你应该说,按理说你应该把这个路径写什么写完整啊,按理说你得这么写,就按理说是这是按理是吧,这个什么从理论上来讲,理论上然后呢,分配ul分配URL给controller方法,给CTRL方法。
12:15
方法分配UR本来应该这么写,当然由于太多了,那我们说为了简便,为了简便,为了简便啊,然后呢,前面这些内容可以省去啊,这是协议啊,这是协议,HTTP协议,然后呢IP地址,IP地址,然后呢对端口号下边什么对应用的名字,应用名称这些。必须省去,那么省去去省去的时候用什么?用这个斜杠就代表你只要写个斜杠,就代表应用根目录下边的这个斜杠,它又代表应用根目录根目录下的斜杠,知道吗?
13:14
只要以后在U2杠只要出现这个斜杠,就代表根部位上斜杠必须省去知道吧,好,这样的话,大家看我这个方法就对好,方法对好,给它分配一个幺二,将来只要访问这个斜杠,那么它就是什么,它就来到这个方,它访问的时候它自动是吧找这个项目下边对。只要访问这个这个项目下的这个斜杠,它就找这个方法,找这个方法,它这个方法我们说它直接跳转页面,不是访问接片灯罩这个地方不用加准方向包备,那么前台我们根据我模式也没有带参数,因为用户只是输这个URL。所以前台没有带参数,所以这个地方不用定义形盘。所以这个方法就写好了,写好之后在这个方法里边写我们代码就行了,那在我这个代码写我的代码,在这边写什么代码呢。
14:05
怎么写啊,对这个地方再看接入形式是不是跳转过去,对跳转过去跳转过请求转化二重定性,对只要是跳转有两种跳转转发是吧,为啥转发。对,大家看,如果你要重电向的话,大家上面它访问首页的这个地址是不是就变了,这个地址就变了啊这个,那么转换那个JSP,然后地址就变了,它就不是那个JSP了,再一个我这个地方如果是什么,万一需要什么,在这里边想往后边带一点数据的话,如果你要是重新向是不是不好带了,不好带了,当然咱们这个没有数据是,所以这个地方什么叫请求转化,请求转化请求转换到哪,是不是转换到这个页面啊,那转换这个页面咋转啊,对,Return直接把这个页面自源路径是不是写在这。
15:06
对,写到这,那这个页面自段路径是哪呢?对哪个地方对外部in for pages in是不是他点RB是不是这啊对,那我正常写完。这个地方是吧,来一个叫外部吗?有为什么外部呢?对对外部APP下边的资源直接去访问外部银核下边的谁呢。Pay这是哎这个pay这啊下边的谁啊in nice下边的谁啊对对,JSP我们一会把它改成JSP就行,知道吗?诶你说老师外部音份里边东西不是不能直接访问吗。不能从外界直接访问,我这是要对内部就可以直接访问,这是我们说的。
16:06
那这样的话,大家我们说我们这个地方跳转到这个页面是这么写,万一别的地方你需要跳转别的页面了,是不是还得这么写,对还得写,那写别的页面的资源路径。然后呢,再去跳转别的页,还得跳转别的页面,那我们说不管是跳转到哪个页面,是不是前面这些东西都是一样的,既然都是一样,他说了。这个地方他就不用写了,那只要是页面是不是我们的都是动态页面啊,这个地方也不用写了,所有的页面后边都是什点JP,对你只要写它就行了,那你说老师那他只要写它,它也不是那个完整的资源目录,资源路径,对视图解析器是吧,它跳转时自动加上前缀和后缀,那我们看我的视图解析器的呢,适度解也就在这个地方,对,就是我们刚才说的前边是这些,后边是这些。然后呢,他就直接跳转过去,这是我们说的这个啊,这个controller,这样的话,这个controller就写完了,就这么简单了。
17:05
啊,所以说大家你看着代码简单,但是你要如果说每一行代码都理解这样的话,其实还是用到他前面不少知识知道吧。啊,所以我们要求大家每写一行代码以后,任何一行代码,哪怕是个标点符号,你都要能说出来原因,知道吗?你要不说这原因,以后你自己写的时候,你就不知道怎么写了,知道吧,必须能说原因,我们说我们写的代码,哪怕一个标点符号都不是白写的。如果是多余的,你就不,你就不用写标点符号也不写,全部给它去掉是吗?必须能说出原因,那你要是说不出来原因,那你就没学会是吗?以后自己用就不会,不会用了,那你怎么办呢?那你要问是吧,你必须把所有的原因都给我搞明白了,这样你才真正的学会是吧?你不能说别人这么写,我就这么写不是啊,这样你永远也学不会啊。必须得能说出原因,每一位同学都能说出原因,知道吧,好,这时候我们说的这个类呢,我们就写完了,那这个类写完了下边。
我来说两句