00:00
好,那接下来呢,呃,我们就来给大家具体讲这个request外注解啊,那么首先呢,我们先来研究一下它可以标注的一个位置啊好。来,回到我们的这个工程下面,呃,那我就不在我们的这个hellowood下面去加了啊,然后我重新去扭上一个package啊,我就叫通Mac,我们就叫handle德ler吧,能看懂吧,然后呢,呃,在这个里面呢,我们再去写上一个class啊,我们就叫po mvc handle德ler啊,专门来去测试的啊handleler OK,来点击finish,好,进来啊,进来以后呢,首先把它要标示为一个请求处理器,我们在上面要加上一个controller注解,这个都记住了吧,好,那接下来我们来演示这个request me标注的位置啊呃,那这样我们呢,还是从这个。这个地方啊,给他发送一个请求来,我就往上面去加了啊,比R好,我们来测试我们的request好麦啊,就是这样的一个请求啊,来测试我们的好request mapping好把这个写好,那么这个请求的话呢,我们就需要在我们的处理器中啊,给它做一个处理,好来我们写一下我们是这个at request好麦,然后呢,我们写一个请求处理方法,还是一个字符串的,这个方法名呢,我就叫它吧,OK,在上面的我们加上request mapping,然后这里面的话,我们正常写的话,肯定就是Y等于哎,你把这个请求写到这。
01:45
是不是啊,然后呢,我也说过啊呃,这个Y轴是可以省略的,然后呢,对于我们当前来讲的话呢,这个诶斜杠也是可以省略的啊,但是呢,一般呢,我都习惯性的把它加上了好吧,OK,那么这是我们request button加到我们的方法上面,然后呢,这里面呢,我就直接成一个诶success就行了啊,那么这个success什么的呢,我们提前都已经给他什么写好了,所以说那你就不用再去写了,那么接下来我们这个来启动一下,其实我们就可以要访问到他了啊,我们来看一下。
02:16
好,Index,我们来跑一下。啊,启动成功了啊,成功以后呢,我们来访问一下,你看这个是能访问到的吧,对不对,OK啊那么接下来呢,我就要给大家去讲了啊,首先我们把这个注解加到我们的这个方法上面呢,其实它就是做了一个什么细分的啊,就是具体的一个映射啊,具体的一个映射,然后这个路径它是相对于我们的web应用的一个根目录的。什么意思呢?你看了哈,就是你做的这个映射,它相对于谁来讲呢?它是相对于我们的spring r vc01,就是我们web应用的一个根目录的,能看明白吗?啊,那都看我这啊,都能看明白这个吧来相对于这个根目录的OK,好,那么假如说现在我在这个类上面呢,我也加了一个request mapping这个注解,看到了吧,也加了一个request mapping这个注解,然后这个里面呢,我依旧给了他一个值,比如说我就叫spring mvc。
03:27
啊,当我在类上面我也加了这个注解以后,那么大家先来猜一下这个注解它会对谁起作用。大家猜一猜,就是我们加到类上与加到这个方法上。对身体重要啊。啊。你们应该能想到的是加到方法上面的,那应该只对当前方法起作用,而加到类上面的呢?
04:00
对我这个类中所有的方法都起作用吧,这个应该是能想到的吧,OK,好,那么我们写到这以后呢,那么其实大家应该能想到,对于我的这个方法来讲,其实它的映射呢,就已经不是这个字符串了,而是什么呀,它再加上它这个能想到吗?我们来测试一下啊,你看当我把这个加上以后呢,大家注意你需要重新把它启动一下啊,这个的话,他刚才已经帮我重新部署好了,我们再回到这个index页面,然后呢,我刷新一下,我再来访问一次,注意了啊,找。好,他告诉我这是一个404,看到没有,是不是404 404,大家还记得是什么原因吗?找不到你要访问的资源吧,然后呢,你会发现在控制台呢,出现了这样的一个警告,注意叫做什么no mapping found,翻译什么意思啊,找不着映射吧,为什么找不着映射呢?那大家注意,他说我当前的这个请求啊,在我的dispatch solid里面找不着对应的那个请求处理方法。
05:11
能理解吧,OK,那么我们就来分析,为什么刚刚我写的还行,当我加上了这个注解以后就不行了呢?啊,那是因为你加上这个注解以后,而对于我当前方法的这个映射来讲,就不仅仅是方法上面的这个了,而是要什么呀?再加上我们类上面的,也就意味着这个家伙啊,这个方法的映射现在变成什么了呢?变成了类上面的它,再加上方法上面的它,那么这个我们从哪个地方其实可以看得出来呢?大家注意我们从这个启动信息我们是可以看得到的啊,来,我先给你重新启动一下,大家注意这个启动信息啊。嗯。
06:04
好,我们来看这个启动信息,那么从这个位置我们就能看到,你看首先呢,它要去读我们的MVC的叉L,然后接下来你看就是map的URL,你看什么MVC,什么test request mapping看到没有,然后呢,MVCVC你看到没有,是不是都是我这个VC开头的,而这个hello的话呢,那就是我们上午写的那一个了,所以说你会发现哦,原来我在类上面加了这个Mac以后呢,啊,它的最后的映射呢,就是不仅仅是方法上面的那一堆了,而是我们类上再加上什么方法上。听懂了吧,OK,所以说呢,当我们加了这个东西以后呢,它是相对于这个的明白吧,而它呢,才是相对于我们的web应用的什么根目录的,所以说现在如果你想正常的去访问到我这个请求处理方法,那么你需要在这个位置是不是也要把spring mvc给他加上啊。
07:02
能理解吗?OK,来加上他以后我们再来刷新一下啊,回去我们刷新一下,注意现在我再访问成功了吗?成功了吧,但是现在的话呢,我们来看一下我们发送了请求,你看是不是它就是相对于我们的web应用的根目录,而方法上面的是不是相对于我们类定义出的。能看懂吗?对吧,你这个一定要你看,就是你前面的这个请求呢,一定要跟你后面的这个映射是对应着,那我才能访问到,如果不对应你肯定是访问不到的,明白这个意思了吧?啊,那么这个也就是我们request mapping它所能标注的一个位置方法上,以及我们的类上。听清楚了吧,OK,好,这个解释完了以后呢,我顺带的呢,再来给大家去解释一个问题啊,就是我们刚刚看到的一个什么问题来着呢,叫做no might be found,你看好了啊,我把这个呢,还是给它去掉,看到了吧,我把它去掉以后呢,我们现在再来访问一次,回去刷新啊找一下大家注意这是一个404吧,然后这个404呢,在我的控制台呢,告诉了你一个叫做no mapping found啊那么这个问题大家现在能分析出来是什么原因吗?
08:21
能分析出来吗?能不能?什么叫做no nobody found啊?找不着映射吧,映射到什么里面去找。到什么里面去找,是不是要这个dispar so,他负责这个事吧,对吧,那你既然能进入到dispar说明什么呀?说明你现在这个请求来到这个dispar solid以后,发现我当前的这个URL找不着对应的请求处理方法。是不是?能明白什么意思吗?那找不着,请求处理方法有几种可能有什么原因?
09:05
要么就是你前面的请求与我具体的映射不一致,听懂了吧?要么就是你压根就没有这个映射的方法。听明白什么意思了吗?来,比如说你看了哈,我就随便访问一个我C01下面我就访问一个哈哈,你看一下这是不是也是一个404啊对吧,然后呢,你看后台呢,是不是也有一个这个no found的呀。看到了吗?所以说啊,我解释完这个问题以后,我不希望你们再问到我老师no many found是为什么对吧?你只要看到no found的,你就去找映射的问题就行了。能听懂什么意思了吗?你就去找映射的问题,然后另外一个,你们一定要学会去看我们的启动信息啊,为什么要看启动信息呢?因为你写的那个映射到底有没有成功,都会在这个启动信息里面体现出来,你来看这一堆,这都是我们的启动信息,它的映射,你看所有你写过的映射,它都会给你列到这儿。
10:06
明白了吗?假如说你写的那个映射在启动的时候没有列出来,说明你那个映射是失败的。明白了吗?哎,你我知道我是在教会你遇到问题以后怎么去解决这个问题,听懂了吧,所以说呢,你在看到404的时候,你就不要去慌张是吧?啊,你就照着我们后台的这个提示,然后呢,去看一看,是不是因为我映射出现了这个问题。明白了吗?OK,好,那么这样的话呢,呃,基本上这个404的错误呢,你就都能把它解决了。好吧,啊,这个大家一定要学会啊,你自己提升你自己的这个解决问题的一个能力,明白了吧,OK啊行,那么啊,我们的request money可以标注的位置啊,就给大家说这么多啊。
我来说两句