00:00
下边呢,我们来研究一下这个视图跟视图解析器,实际上我们讲hello world的时候呢,我们在spring mvc配置文件里边就配置过一个数解析器吧,是吧,叫internal resource view。它的作用是把逻辑视图转为物理视图。我们一直在用它,现在的话呢,我们来看一下它的工作流程,还是先来写一个测试方法吧,Public view and。Return success。这个程序呢,看起来有点像那个ho at request mapping。Index这块写一个超链接,B2B2B craft。
01:07
好,先找一个,看能不能跑得通。哦,这个应该加上什么呀,Spring mvc是吧。刷新。走。这个过程我们是很熟悉的啊,我们看到了那个model和的方法被调用了是吧?但这个呢,我们不去关心它,现在我们想看一看实际的工作流程是什么样的。记,我返回这个success是怎么样?变为一个赛点,JSP响应给我的,对吧,那于是呢,三十五行加一个断点。Debug,走起。走。我们看到三十五行呢,停住了,我们需要往前找去找代码。
02:04
我们找到。第九百四十五行应该是dispach do dispatch的九百四十五行,我们看。由HAHA的话呢,实际上是一个handler adapter,我们后边讲spring mvc运行流程的时候,我们会讲到它这个的话呢,是掉了那个目标方法啊,它会返回一个MVMV是什么东西啊。是一个mode的view对象,看到了吧?诶,MV这块我们先我们需要来说第一件事。无论我们的目标方法返回的是一个string形,是一个view,还是一个modern端的view spring mvc都会给它转化成一个modern端的view对象看到了吧,好了,More端的view啊,那我这块的话呢,我给它停一下。停一下看。
03:01
Model view是什么呀?这里边儿的话呢,包含了视图叫success model,就是那个什么那个model map,这里边的话呢,什么也没放对吧。好的,进一步的,哎,我要去处理视图959行。点进来。怎么处理呢?如果要是没有异常啊,如果异常不是空的话,这个呢是异常映射,我们到后边讲就先过了哈,然后我们看,如果返回的MV不是空的话,将去渲染视图,Render点进来,怎么渲染呢?诶,首先我需要得到这个view叫视图,怎么得呢?叫解析视图的名字进来,我们看到这里边的话呢,我们需要用到视图解析器来解析视图,得到最后的一个视图,然后呢,我们去。
04:03
去真正的渲染视图,掉了一个view的run方法,点进来CTRLT。看第一个抽象方法。进来,那这个方法的话呢,我们看266行就什么呀。合并结果还有模型是吧,点进来好的CTRLT,现在这个视图呢,实际上叫internal resource view,点进来往下翻,我们看到requestpart,我们实际上是一个转发吧,Forward,好的代码停住往后走。走,我们看到诶渲染视图好的,要得到view怎么办呢?这块我们用的这个view reserve,就是我们配置的internal resource reserve得到了这个视图,看这个视图是什么东西。
05:00
里边有这样的一些属性是吧,我们看到诶这个时候变成了web INF for,缪下边的success加XP,好在下边真正的渲染示图,我们得到了request request,最后的话呢,我们这块有一个forward,这就是。试图解析的整个流程,这里边儿我们看到了。论里边两个核心的API,一个叫view,一个叫view,看一眼这个是是吧,View这个的话呢,是视图的接口。视图接口好了,我们看一下,这边有两个方法,一个是返回内容的类型,还有一个渲染视图,我们CTRLT一下,嗯,还有很多视图的具体实现,我们一会儿会讲到其中的两个实现好的我们还看到了一个接口叫Bill reserve。
06:03
好了,这个呢,解析视图,我们配置的这个数度解析器叫internal resource reserve是吧?看一下这个数度解析器是干什么用的呢?张dock。他呀。实际上是呃ul based view的一个实现类,它支持这个internal resource view,那好吧,那我们再来看一下internal view吧,好了,这个是什么呢?看这dog这个呢,实际上是嗯。包装的JSP还有其他的资源,不过这个资源必须得在同一个外部应用下,是吧?我们通常情况下是通过呃,Expose model,呃,暴露模型,模型对象通过什么呀?通过请求句的方式,最后我们使用转发的方式得到目标结果。
07:01
所以说internal resource view跟internal resource view就是搞那个JSP和转发的。好吧,那以上呢,是我们对视图解析的一个大概的一个介绍,我这块有一个呃,比较详尽的一个时序图,大家可以看一下啊。做一个小结,我们利用PPT的方式哈,无论我们返回的是string型,View型、model map型,还是这个model端的view类型,Stemvc都会给他装配成一个某端的view,看到了吧?哎,是Mac借助于这个视图解析器,把model and view转化成一个真正的物理视图。好,视图view这个接口刚才已经看到了,View这个接口呢,它是无状态的,什么叫无状态的呀?每每一个请求都会给我创建一个新的速度对象,所以说它不存在着线程安全的问题。
08:02
好,试图我们说了这个internal resource view是吧,GST view跟这个abstract view一会我们来说。视图解析器作用呢,就是把那个逻辑视图转为物理视图,View view,我们刚才讲的这个internal resource view reserve,一会儿的话呢,我们会说到这个b name view view是吧?哎,Internal resource view reserve,这个是比较常见的,我们这块的话呢,我们已经看到了。OK,以上的话呢,是我们关于视图的一个大概的一个介绍,大家需要知道整个视图的工作流程,现在我们带给大家,嗯,来说一下,大家可以闭上眼睛,像脑子里边像回忆回忆那个小电影一样来想一下。调用目标方法返回一个string型,或者是一个view类型,或者其他类型,VC都会给它转为mode的view类型,对吧?然后呢,通过视图解析器得到真正的物理视图一个view对象,最终调用view的random方法得到我们的。
09:14
血样结果。那么我们常用的就是我们现在用的这个视图呢,叫internal resource view。数字解析器就internal resource view internal resource view是搞那个JSP的,Internal resource view是支持internal resource view的解析器,Internal resource view主要是搞在同一个外部应用下,通过转发的那个结果。好吧。
我来说两句