00:00
下边呢,我们来说一下这个mvc not drive,首先回想一下我们在什么情况下用的这个配置。打开我们的项目,我们看我们的第一个项目,看spring的配置文件,往下翻,OK,我们还记得在我使用了这个mvc view controller。啊,这个配置呢,可以直接发一个请求,而不经过handler,然后由斯兰VC来显应我的目标页面,对吧?哎,我们加上这样一个配置之后,我们发现以前写的那个request mapping不好用了,这个时候呢,我们加了一个Mac not drive。还记得吧,我们说这个细节呢,到后边讲就是现在讲。当时还提了一句话,实际开发中通常都需要来加入这个配置,这是第一个地方,第二个地方找到第二个项目,第二个项目呢,我们为了解决springvc处理静态资源的问题,我们配了一个mvc default handler。
01:10
配完之后request注解又不好用了,于是呢,加了一个mvcation。第二个地方,第三个地方,上节课我们讲那个类型转换器的时候,我需要用到mvc drive conversion service这样的一个属性。来装配我们自定义的conversion service这样的三个地方。好了,下面我们需要看一下这个mvc drive,它究竟干了什么。在说之前呢,我们首先我们还来定个性哈,开发的时候。我们通常情况下都需要来加入这个配置,好吧,下面我们要讲的是为什么加这个配置。啊,我们还是分两方面说,一方面我们看一下spring mvc的官方文档是怎么说的,另外一方面呢,我们结合源代码说一下。
02:05
我们找到spring的帮助文档。一盘Java open source。找到SPRING4。Dogs。使用指南,HTML single index。往下翻我们看哈,这个是spring的一个使用手册。这怎么假死了呢?那我关一下这开诶。再看。这就好了,看第一部分呢,实际上是一个简介是吧,第二部分四四有什么新的内容,核心技术。第四部分数据访问,就是是不是里边我们讲的那个jdbc template那些东西是吧,往后翻,诶我们往后翻。
03:11
看到第五部分呢,是web。第16个章节是MVC的内容,MVC框架吗?再往后翻,我们找到16.16,我们看配置是不是MVC点第一节,诶,这里边的话呢,就给出了如果我们加入了一个mvc drive的话,它究竟会干什么?看到了吧,一共是有这么多,我把这里面有用的东西翻译过来,放在了PPT里边,我们看一下mvc not drive会自动的注册这样的三个bin,分别是request mapping handler mapping。Request mapping handler adapt,还有一个exception handle exception,那前两个呢,一看就是跟什么呀,跟request mapping这个注解相关的,最后一个呢,叫异常解析器,我们在后边讲screen m VC运行流程的时候,我们会重点提到他们,这后边讲异常处理的时候,我们会说到这个exception reserve。
04:16
好了,而且加入这个配置之后呢,还会提供以下支持,OK,这里面我们会看到这个converse service,就是说不加这个配置的话是没有conver service,而且还支持什么呀,还支持number format。这个注解跟date time format这个注解还可以使用value注解对B进行JSR303验证,还可以使用request body跟response body。这个呢,我们在处理Ajax的时候,我们会说到。好的,这个是我们,呃,这个结合文档的方式来看的,下边呢,我们结合源码的方式去看一下,那它到底是怎么一个情况。
05:05
源码这个截图呢,我这块截了一下哈,我们现在我们结合这个源码来说,我们还是从第二个项目说起。第二个项目呢,我们目前这个运行是好用的,对吧,我们现在我们在。这个里边。Employee。这个里面我还是在sitename这块加上一个断点,三至一行我们找一个。Debug。添加ede。好的,我写一个GGG g163.com。没有走好的,停了停了之后的话呢,我们往回翻,诶,我们找到这样的一行,这一行里边的话呢,我们看到了什么呀,我们看到了这个这个班ER是吧?看看这个班往下翻,我们注意到这个班里边呢。
06:10
打开看conversion service是有值的是吧,当然这个值呢叫default conversion service,这个service啊是我后后来自己进行配置的,那我为了更好的说明。Mvc note drive这个配置的这个作用呢,我暂时把我这个配置啊,我先给它注掉可以吧。展时间注掉。就这个暂时先拿掉保存再来。回退。GG g163.com。没有。Summit走,往回翻。这一行是吧。
07:01
看bund。看conversion service,哎,我们看到这个默认情况下配置的这个B呢叫default。Forming conversion service,看到了吧,有这样的一个配置,我们再往前翻。我们找到我们的dispat,随便停一行都可以哈,往下看,这个时候呢,这个dispat看什么呢?我们要看一下它的。Handler adapts打开我们看这个配置我们看,诶这个时候呢,有这样的三个B,有什么http handle,还有一个request这样的三个,同样我们也可以去看。Handleion还有一个handle maps啊,这就不一个一个看了哈,目前是这个情况好了。现在我们恢复到最开始的状态,什么时候开始的状态呀,我把我把这两个配置都给它注掉,看到了吧。
08:09
都住脚。都住掉之后呢,我来执行一下。GGG g163.com。没走起。好的,代码们又停住了,我们还是来看我们的班。B,诶,往下翻,我们看这个时候这个convers service是空,看到了吧,类型转换是有问题的,就是这个时候啊,没有装入这个可沃son service,好再往前来,当然了,这个基本的转换,比方说字符串跟int类型之间的转换还是可以转的,好我们再往前翻,诶,我们找到我们的dispart sum,我们来看我们的什么呀,来看我们的这个,嗯,Handle adapters。
09:08
好,诶,我们看一下目前呢,这三个bin是这样的,我们注意到。这个效果,这个截图呢,我已经截了哈,分别是http request handleler adapt simple controller handleler adapt,最后一个呢,叫method。汉多尔代不?好的,我们看一下它CTRL。C复制了一份,诶代码往往后找这个代码执行的效果呢,应该是OK的是吧,可以正常的执行这个加进来了吗。看到了吧,我们来看一下这个B,这个B呢,实际上是一个过期的B,看draw dog。哎。这是一个过期的bin,那这个bin呢,在3.2以后啊,就被这个request麦病汉特代特所替代了,言外之意就是他这个名它是什么呀?叫嗯,注解方法的handle德尔adapt,所以说它也会支持那个request mapping注解,看到了吧,好了。
10:16
我们的第二个步骤呢,拿过来,我们是把这个搞出去,我们要是把这个mvc default handler解放之后的话,会有什么不一样吗?走起。回退。好吧,这个时候呢,你按这个ADD已经不好用了,是吧,这个时候这个代码也看不着,看不着不行啊,我们找到我们的。好,我们要在某一行把这个代码停一下,哪一行呢?这个代码呀,我们之前看过,我们看一下代码在哪一行能够停住。
11:09
Do service。Do dispatch do dispatch,我们看这一行。Mvc method哟。代码看一下哈,啊,这一行九百四十五行停住这一行呢,是去掉目标方法。好的再刷新。好,停住了,停住之后呢,我们看一下dispat,我们看看它的handle adapters打开,注意这个时候这里边只有两个元素,截完图之后呢,应该是这样,就这里边没有了notation method handle adapter,我无法去处理。Request mapping这个注解映射的请求看到了吧,搞不定。
12:01
搞不定好了,现在呢,我把这个配置再给它解放出来。解放出来。干掉。再看他会怎么样。刷新。走好了。Handle adapt,我们看这个时候里边是有三个元素打开,诶这个时候最后一个呢是呃,Request mapping handle adapter,那它当然可以处理那个。Request mapping所映射的方法是吧?好的,那么这就说明我们加了这个配置之后呢,的确是会,诶加入这个什么呀,叫request mapping handler。啊,错了哈,Request mapping handle adapter这个bin,那其他另外两个B的道理是一样的。
13:03
啊,我们在最前边呢,我们也看到了,我们通过加这个配置的话,的确是会有这个conversion service,否则是没有的,对吧。好,其他的我不再进行说明。嗯,大家细节的话呢,可以看我这个PPT,也可以在看我们那个。看我我们这个官方的这个文档的这个,呃说明,但是最后给大家的建议就是开发的时候这个配置一定要加上。OK。
我来说两句