00:00
好,然后呢,我们现在呢,咱们可以向我们不同的预对象中共享数据了,那大家来想,按照我们正常处理请求的过程,我们下面是不是就需要来实现咱们的页面跳转了,对不对,对吧?好,然后来跳转到指定页面,就是我们响应到浏览器的信息,对不对,对吧?好,就比如说咱们的转发和重定向是不是都会以一个页面为响应的结果,响应的浏览器是不是,是吧?啊像下面大家看SPAVC中的视图,那视图其实就是view对应的就是咱们model and view里面的view,其实咱们刚才在看源码的时候,大家都知道,其实咱们在这儿是不是可以通过model项request的预对象共享数据,对不对,对吧?那model and view,既然咱们的model可以单独存在,其实咱们的view也是可以单独存在的,知道吧,而这个view指的就是我们SPVC中的视图的接口,然后它的作用呢,就是来渲染数据,将。
01:00
咱们模型也就是model中的数据展示给用户,能看懂吧啊行,然后大家再往下SPVC视图的种类啊,然后有很多,大家注意它默认情况下有什么有转发视图和重定向视图,而咱们的转发视图叫啥呢?叫做internal resource view,能看懂吧,叫这个东西叫internal resource,而我们的重定向视图叫什么呢?叫做ready RA,能看懂吧,叫ready RA view啊好,OK,那大家来看,那我们当前这个视图的种类有很多,那我在这给大家写出来了两种,一种是转发,一种是重定向,就比如说咱们下面在这还有两种大家来看啊,比如说我们当前咱们的工程啊。然后引入了GSTL的假包,那大家可能不知道什么是GST啊,因为大家没有学习过GSP,对不对,对吧?这个GSP里面呢,然后它为我们提供了一些标签,然后呢,这个标签呢,就相当于我们写的一些Java代码的功能,就比如说啊,我简单给大家介绍一下吧,行吧,你看咱们的GSP中呢,为什么说它是一个动态页面,因为GSP可以写Java代码啊,比如说GSP中呢,有一个东西叫做GSP脚本片段,然后它是写在一个间括号百分号里边的,然后呢,在这里面咱们就可以去写一段Java代码,知道吧,哎,但是你也要记好了,这里面只能写什么Java代码,那所以说大家想,如果说我们现在要想来控制我们当前这个页面中的某些内容是否显示的话,大家说咱们应该怎么写,你是不是得通过咱们的Java代码?
02:54
啊,通过if进行判断对不对,我们是不是要来控制咱们页面中的标签是否显示,但是大家想你是通过Java代码是不是来控制了咱们的标签,而咱们的Java代码是需要写在哪呢?先括号百分号里面的对不对,对吧?而咱们的HTM的标签是要直接写在页面中的,你能把它给写在监括号百分号里面吗?不能,所以说这个时候写起来呀,就比较的麻烦,那咱们一般用的方式就是先把咱们当前的这一个脚本片段给它关掉,关掉之后在中间写HTML标签,然后在下边再给它开启,之后再写咱们if,再再写咱们if语句的另外一个部分,能听懂吧?所以说非常的麻烦,它为什么麻烦?是因为你要用Java代码去控制HTL标签,能听懂吧?那GSTL这个东西呢?它就为我们提供了一系列的标签库。
03:54
而这些标签库就能帮助我们实现判断或者循环的功能,大家说你通过Java代码不好控制标签,那你通过标签能控制标签不能啊,可以是不是能听懂吧,所以说呢,这个GSTL呢,是咱们GSP里边少不了的一个东西,知道吧,咱们用了之后,然后咱们的代码写起来就优雅的多了,这样的啊,好,然后再往下大家看,那这个时候如果咱们引入了GSTL的依赖,那我们当前咱们的转发视图,大家注意啊,是转发视图会自动转换成什么g ST view,咱们刚才看了咱们的转发视图是不是叫做啥叫做internal resource view,能看懂吗?然后咱们的这个重定向视图叫做ready rap view能看懂吧?好,如果我们引入了GSTL的依赖,那转发视图就会自动转换为。
04:54
GS,那此时大家所看到的所有的这个这个这个转发视图都是谁?GST能听懂吧,这样的啊,好,然后下面大家再来看,那大家都知道我们现在不用GSP了,咱们用的是谁啊,Similar Le对不对?那similar lef呢?咱们是不是在SPAVC的配置文件中是不是配置了一个similar Le的视图解析器,对不对,对吧?好,那所以说我们现在呢,如果我们当前咱们的视图是由咱们的s Le的视图解析器解析之后所得到的,那我们所获取的视图就是一个什么视图,Similar life similar life view能听懂吧,就是一个similar life,大家注意啊,好,但是。
05:43
并不是说咱们所有的情况,你获取的都是一个simif view吗?不是,大家注意,这个可不是的啊,因为咱们在设置视图的时候,咱们有三种方式,第一种方式就像是我们在这儿咱们所写的这种方式一样,咱们的视图里面有任何的前缀没有,是不是就直接就是一个视图名称,对不对,对吧?好,那当然咱们还有其他的方式,就比如说大家看咱们的视图名称可以以什么为前缀,Forward冒号为前缀,咱们也可以以什么为前缀,Ready rap的冒号为前缀?能看懂吧?好,大家注意,只有在什么情况下,咱们创建的才是similar live Bill,只有你的视图被similar live视图解析器解析之后创建的才是simpleif view,能听懂吗?那大家说什么情况?
06:38
什么情况?就是我们当前咱们的视图名称没有任何前缀的时候,才会被c Le的视图解析去解析,能听懂不?这个时候咱们创建的才是什么view similar live view能听懂吧?哎,大家这个一定要注意啊,好,但是如果我们用的是ready forward冒号开头的这个视图名称,它创建的就是谁转发视图,如果我们是用咱们的ready rap冒号为前缀的视图名称,它创建的就是什么重定向视图,能看懂吧?好,OK,行,就这样来,下面大家看啊,我把这些东西咱们给它关掉,然后在controller里面我再创建一个控制器,咱们就叫做view controller可不可以啊,Con啊,OK啊,首先咱们需要加上咱们的CTR注解啊,然后再往下,那我们比如说咱们就把这三种方式试一下,咱们试完之后,然后我们在原码。
07:39
把里面咱们去看一眼,看他创建的视图跟我们笔记里面写的一样,不一样,OK吧啊行,来吧,咱们就先写第一个,首先大家看我在咱们的ten place下边,然后咱们来创建一个HTM,这个HTML咱们就叫做text_view,可不可以,可不可以,可以吧啊就叫做这个页面啊,叫做test_view好,然后呢,这个时候我们要想访问到它,那大家说我们需要干什么,我们是不是需要来写一个控制器方法,然后呢,将我们的请求是不是去映射,我们的请求控制去映射我们的请求映射对吧?然后在咱们请求映射所标识的方法中,是不是返回一个视图名称,对不对,对吧?来啊。
08:30
行,那咱们怎么写啊,比如说我这个页面来写超链接,我们最终还让它跳转到我们的success htm,可不可以啊,可不可以啊,可以吧,好在这咱们是叉MLNS,然后冒号TH等于,然后是HTTP冒号双斜线Ww.cmr否,然后点org,是不是啊,很好啊,来,那大家来看,那我们先这样吧,咱们先来写这个方法吧,行不行,Request括号咱们要来处理的请求,然后叫做test,叫y mef,叫做test similarif,不用,可不可以啊,可以吧,好,OK,那下面咱们来写一个方法,它的返回值呢,然后是ste,然后呢,咱们的方法名跟咱们的请求地址保持一致的,可不可以啊,可以啊,好在这咱们直接来返回S。
09:31
由CSS。能看懂不啊行,那咱们下面呢,咱们在咱们的这个页面里面,然后那我要访问到这个页面,那咱们是不是就要实现页面跳转呀,对不对,那我们是不是就需要来设置一个请求地址来访问这个页面,那咱们的这三个控制器中,这个控制器咱们说的是专门实现页面跳转的,对不对啊,那咱们就在这写一个request mapping,然后双引号斜线,咱们就叫做test的下划线V可不可以啊?
10:04
都可以,可以吧,然后public来返回一个字符串,叫做test VI w,然后大括号,然后直接一个return返回谁test_will是不是就可以了,能看懂吧,啊行,然后那这样,那我们说过咱们的这个页面呢,就是我们当前咱们的这个页面是来写超链接的,然后呢,咱们的超链接来访问咱们view control里面的请求映射,然后最终咱们再跳转到咱们的success.HTOK吧,好,那咱们来写个超链接,然后这个属性要加TH冒号,在这个地方it大括号一个斜线叫啥test see leave for view,能看懂吧,嗯,能看懂吧,好,OK,然后来测试,然后咱们的c live view来大家看啊,好。
11:03
重新部署一下就行,对不对。好,咱们要访问的路径大家都知道吧,应该是test_will哎,知道吧,知道吧,咱们在test control里面是不是写了一个页面跳转,当我们访问这个地址,是不是给我们返回一个这样的视图名称,那它是不是就会被咱们的similar view receivever进行解析,加前缀加后缀找到咱们所对应的页面,是不是啊,行,来下面咱们来一个回车,大家看好使不好使好使来下面我们在这咱们来点击之后,大家看进来了没有,进来了,那但是咱们知不知道它到底创建的是什么类型的视图呀,不知道,好,那我先问大家,大家说我们在这儿啊,咱们所返回的视图名称是不是没有任何的前缀,就是一个success对不对?那所以说大家看,那我们当前咱们的这个东西之所以能够找到我们的这个,找到我们的这个success。
12:07
点HTML这个页面,那它一定是被我们当前配置文件中的这个视图解析器所解析的,大家说对不对,因为在这咱们有前缀啊,在这咱们有后缀啊,那咱们的视图名称加上前缀,加上后缀之后,对应的不就是咱们的这个页面吗?大家说是不是啊,对吧?所以说大家注意什么情况下我们创建的才是c live view,记好了,如果你的视图名称没有任何前缀,那我们当前咱们的视图名称就会被咱们所配置的谁similar live view over来解析,能听懂吧,能听懂吧,好OK啊好,然后被他解析之后,你看看这叫similar live view over,那被他解析之后的视图,那一定就是一个c view,能听懂吧,好,OK,来,咱们开始打断点,咱们来瞅一眼OK吧,好来,咱们就在这打个断点,是不就完事了?
13:07
啊,是不是啊,然后呢,来大家看我现在呢,我直接刷新是不是就可以啊不行啊这样来刷新,然后下面咱们来点击进入到我们的断点模式,来找到我们当前咱们的谁呀,是不是还是我们当前咱们的杜迪PAR,然后1061行是不是啊。是不是这句话认识不就是我们看咱们的不管用什么方式返回的都是model and view的这个这个。地方能看懂吧,啊在这打个断点,然后下面呢,我给大家找几个比较重要的点啊,这个东西是咱们拦截器中的方法,是拦截器中的方法啊,然后这个东西呢,然后是我们来处理model and view,处理咱们封装的模型数据。然后和我们的视图信息的这个这个方法,所以说这个方法咱们也要看。
14:01
能看懂吧,嗯,好,然后呢,这个方法其实就是哪个方法呀,就是咱们下面的这个方法啊,再往下就是这个方法看到了没?嗯,看到了吧,好,那咱们就一点一点的走啊,行不行,来F9咱们直接跳过,大家看是不是就直接跳到这了,看到了没?看到了吧?好,然后那我们跳到这个方法的时候,咱们是不是要进到这个方法里面看一下这个方法呢?我也跟大家说了,这个叫process叫执行Dis part叫转发,Result叫结果,叫执行转发结果,对不对?好,咱们看到这里面有一个叫做MV,那所以说这个方法既然有MV,那它肯定要对我们的model at view进行处理,大家说是不是鼠标放上去之后,大家看这不是咱们的MV吗?大家看视图名称是不是叫success啊,OK吧,好,然后咱们来进入到这个方法就走到这儿了,然后呢,咱们再往下看,我就给大家找咱们需要看的点,OK吧,来咱们看到这个地。
15:01
地方,如果咱们的model and view不等于空,是不是会调用这个方法,而咱们的这个方法呢,叫做render render就是处理执行渲染的意思,OK吧,好,所以说既然这个方法中也有model and view,还有咱们当前的请求对象和响应对象,那这不就是干什么来处理咱们最终的一个结果的,对不对,对吧,处理咱们封装的model和view的对象,然后还有就是咱们的当前封装的请求报文的请求对象和咱们当前的响应报文的响应对象是不是啊,好,然后我们下面咱们再进去,然后大家看就到这儿了,然后咱们再往下走,大家注意,其实这个地方啊,这个东西是关于咱们的本地化的,就是在我们这个加法点U求里面,然后有一个类叫做local,然后这个local,然后就是跟咱们的本地化相关的,而本地化呢,其实指的就是你当前本地的一个环境,就比如说咱们的。
16:02
那本地化有两个部分组成,第一个部分是什么?源码,第二个部分是国家码,就比如说这个Z是中文,CN是中国的意思,能听懂吗?哎,行,比如说比如说美国这个地方是en,然后这个地方是us,知道吧,知道吧,哎这样的啊,所以说它就是用来表示我们当前咱们的本地化环境的一个东西啊好,然后再往下,大家看这是不是往下执行啊对不对,然后咱们往下走,走到这儿大家看,首先呢,他先从咱们的model and view中是不是来获取了咱们的视图名称,大家记不记得咱们自己在用model and view的时候,里边是不是有个set view name对不对,对吧?那你的set view name是什么?那咱们get出来的是不是就是什么,对不对,那大家都知道MV中咱们的视图名称是不是叫success,所以说在这咱们的view name,它一定是个啥success能听懂吧?来,咱们继续。
17:02
就往下走,然后走到这success有了,好,如果说success view name不等于空,然后大家看这个地方是不是就会根据我们当前咱们的视图名称,还有我们当前这里面看看这个叫做get model internal,是不是你把它打开,你看这是个啥。啊,你看当前咱们的这个model and view里面get model,大家看这个方法返回的是谁,返回的是model,那不就是咱们model and view中所封装的模型数据吗?是不是是不是好,OK,来,然后再往下本地化,再往下请求对象,好,然后在这就可以通过来解析我们的视图名称,然后来获取我们当前的一个视图对象了,能听懂不?所以说大家记好。你创建的视图对象是什么?它只跟咱们当前的视图名称有关系,能听懂不?如果你没有前缀,那我们创建的就是谁c view,如果你有前缀是ready rap,创建的就是重定向视图,如果你有前缀是forward冒号,那咱们创建的就是转发视图,能听懂不?好啊,行,来,直接下一步,咱们直接看这个view到底是啥就完事了,知道不?咱们就不看它到底是如何去解析的了啊来,咱们直接往下走,大家看鼠标放上去。
18:31
鼠标放上去,或者说你看这个地方大家看是不是就已经有了呀,咱们当前创建的这个view叫什么?View c live view能看懂吧,能看懂吧,好,所以说我再问大家什么时候创建的是c Bill,什么时候咱们当前的视图名称中没有任何前缀的时候,也就是说这个视图是需要被咱们的SIM Le view receive解析的,这个前解析的视图名称,然后才会解析之后创建咱们的c view能听懂吗?能听懂不好,OK啊,行,然后F9,然后咱们跳过就可以啊,所以说大家注意c money主标什么时候来创建的,看好啊,控制器方法所设置的。
19:18
视图名称没有任何前缀,此时的视图名称会被什么SPAVC配置文件中所配置的视图解析器解析,视图名称拼接前缀和视图后师徒,师徒前缀和视图后缀所得到的最终路径会通过什么方式跳转?转发这个咱们一直写的不都是这个例子对不对?所以说转发这个大家应该都知道是不是好啊行,然后这上面是给大家写的一段代码测试代码,下面呢,是给大家写的图,能看懂吧啊,我希望大家呢,然后也要会自己去找,其实咱们没找几层,咱们就没进,没进几层目录记不记得来咱们啊已经跳过了是吧?首先就是咱们的那个什么1061行对不对?然后咱们那个MV等于ha.handle的那一行,是不是再往下是process第PA result这一行,然后进入到这个方法里面之后,咱们是不是又。
20:19
进入到了render方法,大家看咱们到现在看的不还是render方法,对不对,对吧?所以说咱们就进了几层方法,先进了process process dispatch result,然后在这个方法中是不是就直接进到了咱们的render里面,对不对,对吧,咱们就是在这儿看到,所以说我希望大家今天咱们讲完,大家在练习的时候,你也要知道该怎么进入到这个地方来查看我们当前所获得的病,能听懂吧,好啊,像当然呢,咱们下面还有两个视图,到时候我还会带着大家再看一次,所以说没有注意的同学,然后咱们讲这两个的时候,一定要好好看的,OK吧啊。
我来说两句