00:00
好,那我们在SPVC中,然后咱们该如何往不同的预对象中共享数据,咱们刚才呢,已经给大家演示过了,那下面呢,我们再来看啊,那大家说我们往预对象中共享完数据之后,我们要干嘛了?咱们是不是就要来实现页面跳转了呀,但是我们现在咱们是不是只会一种,就是来返回一个逻辑视图对吧,然后呢,加上前缀加上后缀,然后它就可以被咱们的视图解析器解析,加上前缀,加上后缀,然后来跳转到指定页面。好,那我们现在呢,咱们实现页面跳转,大家都知道我们不仅能够通过转发来实现,我们也能通过重定向来实现,对吧?所以说下面咱们就来看一下咱们SPVC中的这个视图啊好,然后SPVC中呢,它的视图是什么?接口叫做view接口,然后这个视图的作用是用来干嘛渲染数据,将模型model中的数据来展示给用户。啊,然后咱们spring VC中的这个视图,它的种类有很多啊,种类有很多啊,比如说呢,咱们下面要讲的有三种,第一种是转这个simli view啊,然后呢,第二种是转发视图,叫internal resource view,第三种呢叫重叠向视图,叫做red direct view,那我们在similar life的环境下,我们用的比较多的啊,就是similarli view,还有咱们的这个ready direct view,就是重定向视图。
01:23
好,然后下面呢,咱们就来看一下啊来呃,然后这个大家注意,在这给大家说一下,默认有转发视图和重定向视图,这个我们刚才说过了,对吧?当工程里面来引入GSTL的依赖的时候,然后转发视图呢,会自动转换为g STL view。好大家注意,因为我们现在呢,咱们不用GSP,所以说呢。如果说有用GSP的同学,或者说之前学过GSP的同学呢,然后大家可以注意一下,就是说呀,如果我们现在没有引入GSTL的时候,咱没有用GSTL的标签的时候呢,然后我们所创建的视图解析器是什么?
02:02
对吧,它就是咱们默认的internal resource view,大家注意就是这个,还有就是我们下面的这个重电项视图ready direct view,而如果说我们当前咱们引入了GSTL的依赖,那我们当前的转发视图它就会自动转换为GSTL,也就是我们当前的internal resource view,它就会自动的去转换成我们当前的这个什么呢?叫做gstl view啊,当然我们现在咱们在工程里面没有用GSTL,那咱们就不管它了。好,然后下面呢,那我们再往下看,若使用的视图技术为c lef,则spring VC的配置文件中配置了咱们c Le的视图解析器。那咱们由此视图解析器所解析之后的视图就是c view,比如说我们现在的这些情况,我们现在的这些情况,我们所获取的视图,大家注意都是什么呀?都是c Mo view,你看吗?咱们把这些东西都给它关掉,咱们来找到咱们的配置文件,配置文件里面咱们配置的视图解析器就叫做simli view resolvever,这叫做SIM Le SIM life的视图解析器,那所以说被它解析之后的视图就叫做cli view,这个大家注意,这个我们可以从源码里面看一下。
03:18
来,比如说我们现在咱们随便去找一个方法啊。比如说我们来找到咱们的tes scope control,咱们来找到我们的这个model吧,行不行,咱们在这呢,来打个断点,或者说咱们把这几个都给它打个断点啊。行,然后这个是map,通过map网请求域共享数据,这是通过model map网请求域共享数据,然后这个呢,是通过我们的model网请求域共享数据,然后下面呢,我们再来看这model and view,咱们也打个断点吧,OK吧,然后下面呢,我们就来给大家来进行一个测试啊,咱们先看第一个问题,就是我们之前所说的,咱们说了啊,这个model and view,它是我们当前咱们的这个。
04:02
啊,SPAVC里面官方推荐我们来使用的就是这个对吧,为什么?因为在底层中,你不管你用哪一种方式,我们最终呢,然后咱们的这个方法执行之后,咱们的模型数据,Model,还有咱们的视图都会被封装到model and6重啊好,那下面呢,我们就可以来发送一个请求来进行访问了,对吧?好,我们现在来一个刷新,大家看好,咱们先来访问咱们的这个谁啊,Model and view点击之后大家看咱们就进入到断点中了,那我们现在咱们该如何进入到我们的dispatch solve里面呢?首先大家注意在这个位置,咱们在这呢,有一个这个对吧,视图这个框,然后这个框里面来展示的是什么?展示的就是我们当前咱们的一个方法站,也就是说我现在我的断点,我的方,我的这个代码呢,是走到了这一行,因为我们打了断点,所以说它没有结束,那我们当前咱们直接调用这个方法,或间接调用这个方法的。
05:00
直接调用这个方法的方法,或间接调用这个方法的方法,是不是应该都处于阻塞状态,对不对?好,然后呢,我们当前的这些方法是在哪呢?大家注意就在这个模块中啊,就在这个窗口中,然后这个窗口里面给我们展示的就是方法站,就是我们直接就是我们咱们的程序能走到这个位置,能调用到我们当前的这个方法,然后它都是同。它都是从我们当前的哪些方法中,然后调动到这儿的,OK吧,那所以我说我们应该去找谁,咱们往下找,大家注意,咱们来找,我们主要来看的是谁呀,Dispaure solve嘛,对不对?我们主要来看的是咱们的前端控制器,看它是在哪一行里面,然后最终调用到了我们当前的控制写方法,所以说大家看好,你看这里面dispatchs of that dispatch of that是不是在这呢?能看懂吧,Dispatch solve,然后do dispatch方法的多少行,1061行,来咱们把它给点开,大家注意就这一行啊,然后咱们可以在这呢来打一个端点对吧,那我问大家是他先执行还是他先执行啊,也就是说我们当前咱们的这一行代码先执行,还是这一行代码先执行啊。
06:15
对不对,存在于方法占中的方法,大家看好,咱们越往上,然后那是说明跟我们当前咱们的这个要执行的方法断点所在的位置越近的。OK吧,然后越往下是跟我们当前咱们的这个断点所对应的位置越远的,知道吧,然后我们当前之所以走到这儿,那就是从我们当前,从咱们这个窗口它的最最下边这一行,然后一步一步的去调用,一步一步的往上调用,然后最终才调用到了咱们的test m ma mav的第40行代码,OK吧,这个大家要注意啊,行,然后呢,所以说呢,那我们当前我问大家,我们当前咱们的test mav这个方法,我问大家它是不是由我们dispat solve的1061行调用进来的,对不对,因为它是存在于方法站中的,咱们的方法站那不就是。
07:08
那我们当前的方法站,那不就是我们当前咱们的这个直接或间接的调用到我们断点所在的位置的方法嘛,对不对,好啊行,那我们下面呢,咱们再往下啊,你看这个方法,看这个方法它的返回值是啥,MVMV是什么,你鼠标放上去,你看它这是不是一个model and view啊。能看懂不?所以说当我们通过这个方法来调用,我们当前来间接的去调用我们的控制器方法的时候,咱们最终咱们所获得的就是一个model and view对象,OK吧,好,然后我们下面咱们来一个啊,大家注意这几个键,大家要知道啊,这个是下一步,这是进入某个方法中,这是强制进入,然后这个是从咱们的某个方法中跳出对吧?好,然后这个是返回上一个断点,然后这个是跳过断点对吧?这个是alt加F9啊,或者说大家可以认为它是跳转到我们当前光标所在的这一行啊,好,然后这个呢,是alt加F9来实现的,那我们在这咱们也可以直接点击F9来实现这个功能也行。
08:16
F9啊,直接跳过的意思啊,好,然后下面呢,我们再来测试其他的功能,大家看啊,通过model向请求域共享数据。然后咱们点击之后,大家看你看又走到这儿了。对吧,然后我们跳过是不是就走到这儿了,对不对,那所以说说明什么,说明我们当前咱们的每一个控制器方法,它都是从我们的这个方法来进行调用的。能看懂不,而且我们当前控制器方法执行完之后,咱们是不是最终都会去获得一个model and view对象,那我们来看一下这个model and view长什么样啊,来咱们咱们往下找啊,大家注意,咱们来找到这一句话,这一句话叫做process dispatch result。干什么的来执行我们当前咱们的一个转发结果,然后咱们在这打个断点,那我们现在跳过大家看一下,那model and view,我们现在是不是就获取到了。
09:09
对不对,大家注意,这个model and view咱们现在就已经获取到了啊,好,然后我们获取的这个model and view,它到底是长什么样的呢?大家可以看一下,你看这里面的view success,咱们当前的模型数据test request scope等于hello model。能看懂吧,然后咱们在这咱们有没有用model and没有,你看我们现在咱们用的是啥,咱们用的是这个model对象来实现的model功能,咱们返回的字符串,然后来实现的view的功能,对不对?所以说大家一定要看好,不管你当前用的什么方法。他最终啊。他都会将咱们当前的数据,然后封装为一个model and view对象来继续。咱们再看两个啊,还有谁model map,你看又走到这一行了,对吧,然后往下走,再往下走看这啊,看这个model and view,看它长什么呀,是不是view还是success model,是test request scope hello model map能看懂吧,是不是把咱们数据封装的model and view中了对不对,然后最后一个,然后咱们的这个啊,像通过map向请求域共享数据,你看还是这句话1001好对不对,跳过跳过看这个model view。
10:25
看一样不一样,是一样的效果的啊行,那这个就是我们来观察咱们的这个啊,控制方法,控制器方法执行之后统一的返回值model and view的一个过程,OK吧,好,那这个咱们先看到这儿,那下面呢,那我们是不是就可以来查看我们当前咱们所创建出来的不同的视图对象了啊。
我来说两句