00:00
好,那下面呢,咱们就可以来测试咱们的功能了啊,首先呢,咱们先实现第一个功能就实现对首页的访问。好,那我们先把咱们的tomcat来配置一下啊,把咱们的工程呢配置到tomcat中,好,然后我们在这需要来干什么,需要来选择tomcat server,找到local本地,然后咱们给它起个名,比如说就叫做spring mvc,然后下面呢,大家注意,咱们就要来把咱们的工程部署到tomcat中了,点击加号,选择artifac,来选择下面这个啊,叫做哇xloed对吧?选这个,然后点击OK,然后这个是它的应用上下文路径,这东西是干什么的?大家注意啊,我们现在要想访问的tomcat里面的某一个工程,就是通过咱们的上下文路径来访问的。对吧,因为我们的tomcat里面大家注意这是一个外部服务器啊,那一个外部服务器中咱们是不是可以部署多个工程,比如说这是咱们的A工程,这是B工程,这是C工程,对吧?那我们现在如何访问到tomcat里面具体的某一个工程呢?就是通过咱们当前这个工程的上下文路径访问的,OK吧?换句话来说,你通过它就可以访问到服务器中的这个工程了。
01:14
OK吧,行,那下面呢,我们再继续往下看,这东西太长了啊,咱们给它设置的短一些,比如说就叫spring VC,就叫做spring VC,大家注意啊,这就是我们当前咱们的这个工程的一个上下文路径啊,好,然后再往下,那咱们再回到我们的server,然后在这个地方我们是不是可以来选择第三个选项,叫做redeploydeploy,然后这个咱们也可以来选择第三个,那这两个是什么意思,大家应该都知道啊,给大家说一下。就是当我们把一个工程运行之后,然后当我们再次去更新这个,当前我们去选择这个更新这个选项的时候,它默认默认选择的一个选项就是什么叫readyloy,对吧?比如说我在这点击OK,然后点击OK,大家看啊,一会咱们把咱们的这个项目给启动起来之后,下面是不是有一个这个就是像刷新一样的按钮,当我们来点击这个按钮的时候,它默认的一个选项,知道吧,哎,就这个意思啊好,那我们选择第三个是什么意思啊,叫做重新部署,第四个叫做重新启动,我们来选择重新部署就行,因为重新部署是把咱们当前的工程从服务器中删掉,再重新部署上,其实跟咱们的重新启动了效果是一样的啊好,再往下呢,然后在这这个update classes and resource,这是什么意思?当我们当前的frame是窗口,对吧,然后当我们当前的窗口,这叫做失去焦点,失。
02:46
去焦点的时候,它做的事情是啥?叫做update classes and resource什么意思?就是说当我们当前的ideal这个窗口,当它失去焦点的时候,它默认所做的一个操作干啥的?更新内核资源,OK吧,这大家都知道啊,咱们点击OK完事,然后我们是不是就可以启动它了?但是呢,大家注意,你现在启动的话,它能访问到页面吗?访问不到,因为我们当前的页面是在哪的呀?
03:14
是在我们的这个外部银付。下面的ten,下面的index.html,那我们的浏览器,然后它能访问到。Web下面的资源吗?浏览器能不能直接访问到web in for下面的资源,访问不到吧,这个web in for下面的资源呢,具有一定的安全性,对不对?然后我们只能通过服务器来访问,浏览器是直接访问不到的,然后换句话来说,你只能通过转发来访问啊,所以说大家一定要看好,那我们下面呢,我们应该怎么去做?然后我们现在启动完之后,大家注意它一定是一个什么呀,它一定是一个404,因为咱们根本就没有首页对吧,咱们根本就没有首页,咱们也没有处理首页的一个程序。
04:00
OK吧,好,那所以我们现在就可以在我们的控制层里面来把我们当前访问首页的这个请求呢,来进行一个处理,大家注意啊好。来咱们来看一下,咱们先让它来启动一下啊,好启动成功之后,然后我们在这大家看你看直接就是404,为啥呢?因为我们现在咱们的处,咱们这个访问的是首页嘛,对不对,那你访问的首页现在这个请求,因为我们在咱们的web点叉L中,咱们已经配置了所有的请求都要干嘛,所有的请求是不是都要被dispatch of来进行处理啊,对不对,而我们当前咱们的dispatch of它有没有来设置我们访问首页的处理程序,并没有,所以说它就是404。因为谭老师,那我们之前访问这个首页是不是不是可以直接访问到index.html或index.gsp吗?但是你看咱们现在没有啊,对吧,如果你的web APP下面有index HTML。
05:02
有index.jsp,那咱们可以访问到,但是你看现在咱们没有,那所以说大家想想,而且我们的index它在这儿呢,你能直接通过浏览器访问吗?访问不了啊,所以我们现在要想访问它,我们就必须得通过我们当前的这个啊,请把它当做是一个请求来进行处理,来指定我们当前的这个请求要访问的页面就是它OK吧,那所以咱们怎么办?大家想我们来找到控制层,来找到控制层之后啊,咱们说过控制层里面它是用来干啥的,就是来处理我们当前咱们具体的一个请求的。比如说我在这来写一个方法,然后它的返回值是string,然后呢,咱们在这叫pro,叫proto proto就是入口的意思,对吧?好,咱们把这个方法设置完之后,比如说这个方法就是用来处理我们当前访问首页的这个请求的方法。能看懂吧,好,但是大家想,你说它是处理处理处理请求的方法,它就是了吗?不是啊,好,那所以我们得怎么办呢?大家注意,在我们的spring VC中,它为我们提供了一个注解,叫做it request mapping,好,这个注解大家看它叫啥,叫做请求映射。
06:18
能看懂不也就是说他就可以来把我们当前咱们浏览器所发送的请求映射到我们当前这个方法的执行。好,也就是说如果我们当前咱们的这个浏览器所发送的请求啊,然后咱们发送过来之后,我们就可以通过这个注解,让我们当前所标识的方法来处理这个请求,OK吧,好,那我们该怎么去配置呢?大家注意啊,你光写个注解肯定不行,对吧?因为我们当前从浏览器向服务器所发送的请求,大家说你如果说就是我们看的时候,咱们从这个。就是我们能感觉到的啊,咱们能体会到的,然后这个浏览器发送到服务器的请求有什么区别,大家想想它是不是只有一个路径的区别呀,对不对?虽然说咱们的请求都是以请求报文的方式发送到服务器的,但是我们能看到的其实就是一个请求地址的区别啊,对吧?你访问首页,那咱们浏览器服务器响应回来的就是首页,那你访问哈,那咱们所看到的就是这个服务器和我们响应回来的就是这个请求所对应的响应,对不对?所以说他们的区别,咱们从字面上看到的啊,其实就是径的区别。
07:32
那所以在这呢,大家注意,那我们怎么来确定我们当前的这个请求映射所对应的方法要处理的请求呢?非常简单,在这个注解它的value属性值中来设置一个路径,比如说我们在这来写一个斜线。大家注意啊,张老师为什么要写斜线,因为这个斜线呢,大家都知道,在我们的服务器中,斜线是一个绝对路径的标志,咱们的路径如果以斜线开头,那它就是一个绝对路径,对吧?好,然后这个斜线它分为由浏览器解析的和由服务器解析的,这个东西就是由浏览由因你在服务器中写的嘛,这就就是由服务器解析的绝对路径,而服务器解析的绝对路径这个斜线被解析成什么了?
08:17
大家知道不知道被解析成什么了,被解析成了local host的冒号8080,然后斜线上下文路径,也就是说我们在这咱们的这个斜线其实跟我们当前咱们的这个路径是一样的,知道不?这个大家注意啊,看好这个斜线,它是我们的上下文,它是我们当前咱们的一个绝对路径的标志,当它被服务器解析之后,它被解析成什么了,就是local host的冒号,8080上下文路径。能看懂吧,那所以大家看好,当我们的浏览器发送一个请求,如果这个请求路径跟我们当前request mapping的value属性值所设置的是一样的。也就是说请求路径跟request mapping的这个value属性值所设置的路径是一样的,那这个时候我们的这个方法就是来处理请求的方法。
09:10
能听懂吧。一定要看好,非常简单啊,大家注意非常简单,你只要保证咱们当前咱们浏览器发送的请求,然后跟request mapping注解的value属性值,所value属性值所设置的这个请求的路径是一样的就可以,然后下面咱们这个方法就是处理请求的方法,怎么处理请求呢?看好啊,在这咱们来一个双引号,Return一个字符串,在这return的是什么?大家注意啊,然后将咱们的看好啊逻辑视图。逻辑视图返回什么叫做逻辑视图?刚才跟大家说了,你要跳转到的这个页面的物理视图,去掉它的前缀,去掉它的后缀,就是咱们的逻辑视图,那我现在我访问首页,我要让它跳转到哪index HTML,那大家说这个页面它的一个逻辑是图是谁呀?完整的路径不是web in下面的time place下面的index HTML吗?前缀是谁?再看一眼web in for下面的ten place把它去掉了,对不对?然后呢,后缀是点H7L把它去掉了,那剩余的不就是逻辑视图吗?那不就是index吗?
10:25
能看懂吧。这个大家注意啊,这就是我们当前的逻辑视图,我们现在写的这个是什么意思?大家注意,我们当前的这个控制器方法,就是控制层中的方法,我叫做它控制器方法,OK吧,然后这个方法它来处理的请求,就是我们的请求路径为上下文路径的这一个请求,好,如果咱们浏览器发送的是这个请求,那我们当前咱们的这个方法就是处理请求的方法,咱们都干嘛了?直接在方法中返回了一个逻辑视图。然后这个时候咱们返回的逻辑视图会被谁解析?
11:01
会被我们在配置文件中所配置的视图解析器来解析。然后把咱们的逻辑视图加上前缀,加上后缀。它是不是就匹配到咱们一个完整的物理视图啦,然后通过c lef的渲染,然后来跳转到这个页面。能听得懂吧,好,这个时候大家注意你看啊,然后我们现在咱们来找到咱们的service色,大家看这个地方是不是就有一个圆圈,对不对,就是一个刷新的一个按钮,咱们点击之后默认选择第三个,知道为啥默认选择第三个吧,因为我们刚才咱们在配置通用cat的时候,是不是就有这个选项,对不对?好,然后大家可以把下面的don't ask的选项,咱们以后只要点击这个,它默认就是重新部署的功能,OK吧,好,点击OK。好,大家看啊,现在呢,我们就可以重新进行部署了,然后这个时候咱们再去访问首页,大家看,然后我们来一个刷新,诶,大家看啊,好,Index的HTML就有了。
12:04
跳过来了没有跳过来了呀。对不对?好,这个大家一定要注意,这就是我们当前的一个访问首页的功能,那咱们就趁热打铁呗,咱们就再写一个,比如说这是我当前的这个首页,咱们在这呢,有这个H1,然后index.html,这是一个标题,然后下面我在这再测试一个,这是一个超链接。对吧,然后呢,我们现在比如说我要来访问一个什么,我要来访问一个。这个哈喽,这个请求路径为,请求路径为哈喽的这个请求,对吧?然后大家看一下该怎么写,那咱们可以先把路径给写出来吧,叫TH冒号,大家注意,这是咱们的c leaf里面的语法,知道吧,这是c leaf里面的语法啊,TH冒号开头的就是我们当前咱们的c Le中所提供的属性,但是大家要想用它,你可不能随便乱用,大家注意,你看啊,我在我们当前咱们的页面上是不是来设置的有这个内容,在HTML标签中设置的有叉MLNS冒号TH等于HTTP冒号W w.clif.ot这就是我们当前咱们所引入的s Le的一个命名空间,一个约束,你只有把这一句话给它加上,然后我们当前在页面中才可以使用c Le的语法,好,然后换句话来说啊,大家注意,也就是说我们刚才所用的这个属性,TH冒号这个属性谁提供的,就是由我们当前引入的这个约束。
13:33
提供的知道吧,好,那大家怎么去写呢?你看刚才你没用的时候,这是不是灰的,你用了之后你会发现它不灰的,那不就说明我们当前所用的TH冒号,它用的就是谁呀,它用的就是我们当前咱们的这个,呃,这个约束里面的内容知道吧,好啊,那大家如果说你要想写的方便一点怎么办?把这个复制一下来,找到我们的settings,来找到咱们的fair and code time place,找到HTML,大家注意啊,直接把我们当前的约束直接添加到咱们的模板中。
14:09
能看懂不?哎,行,以后我们所创建的所有的HTML,它都是自带我们当前的这个约束的,OK吧,好。来,然后下面呢,我们来看那TH猫和h ref它有一个什么样的功能,然后它可以帮助我们来渲染我们当前的路径,来解析这个路径怎么写A的大括号。然后加上一个斜线叫做哈喽,叫做哈喽就可以啊伟唐老师,这跟之前咱们写的有啥区别呢?哎,我问大家,你能在这直接来写一个哈喽吗?啊,大家注意,你能在这来写个哈喽吗?你这写个哈喽这是啥意思?你在这写个哈喽这个斜线这是一个绝对路径,咱们刚才说过,然后以斜线开头的路径就是一个绝对路径,但是这个绝对路径是由谁解析的,浏览器解析的,所以说它就会把这个斜线给解析成local host的冒号8080,有上下文路径吗?没有,在这大家注意是少一个上下文路径的,但是如果我们当前呢,然后咱们用c Le的方式,然后来访问这个路径,解析这个路径,那它是会自动帮我们把上下文路径给它加上的。
15:21
OK吧,所以大家一定要看好啊,来,咱们可以看一下啊。咱们在这来写一个超链接,上面咱们写个超链接,那这个咱们是来测试对吧,然后咱们的spring mvc OK,然后我们当前咱们的路径呢,这个是咱们来测试路径,哎,测试,然后咱们的绝对路径,绝对路径好行,这个大家注意,那我们现在呢,咱们要这个浏览器发送到服务器的请求是不是斜线hello啊,那我现在我问大家我在control里面该如何处理这个请求,简单不写个方法返回值string对不对,然后这个咱们就叫做hello,完事啊,大家注意怎么写,在这来加上一个request mapping,咱们只要来保证,谁保证我们从浏览器向服务器。
16:10
所发送的请求的路径跟咱们的request mapping这个注解的value属性值一致,斜线哈,完事。能看懂吧,就这么简单,然后在这个方法里面,我们就该怎么处理请求就处理呗,那我们现在没有学习更多的知识,那我们就直接实现页面跳转,在这咱们这个方法的返回值,这字符串是啥意思啊,大家想想这字符串是啥意思,是我们当前咱们所设置的逻辑视图,那比如说我们现在往哪跳,咱们在这写个页面叫SUCS,然后这是咱们的成功页面,对不对,然后在这写个SUCS.html大家注意来看啊,那我们现在咱们该如何往这个页面去跳呢?你看。啊,怎么跳web info下面的time place下面的success.HTML把前缀去掉,把后缀去掉,那不就是success吗?所以说return一个SUCS,大家注意这个逻辑视图该怎么写,以后我就不再说了啊,非常简单,好,然后那我们当前返回的逻辑视图会被谁解析视图解析器解析加上前缀,加上后缀,是不是就可以找到咱们当前一个具体的物理视图,然后来渲染页面,最终来实现页面跳转,OK吧,行,来,咱们在这再来一个啊,重新部署啊,大家注意我点的是哪?我再说一遍,我点的是这个位置。
17:36
知道不啊,这个位置默认就是重新部署,然后下面大家看我们现在来一个刷新。好,大家看这俩超链接啊,鼠标放上去之后来看这个位置,看这啊是spring mvc斜线,Hello,看到没有,然后我们现在把它关掉,然后咱们再来看这个,你会发现是local horse的冒号,8080斜线,哈喽,有上下文路径吗?没有啊,所以说这就是我们所说的路径问题,然后我们当前咱们这里面所设置的路径啊,为什么我要这样去写,因为咱们当前的这个绝对路径会被c life来解析,会被c life来渲染,然后它被解析之后,它会自动帮助我们少什么,会帮助我们加什么。
18:22
那他少上下文路径就会把就会帮我们把上下文路径给加上OK吧,行,然后下面咱们来测试,这我就不点了,这肯定不行,肯这肯定是找不到资源的,知道吧,然后下面我们来点它,大家注意点击之后大家看跳过来没有啊。没问题吧,是不是就直接跳到了咱们的success.HTML能看懂不?哎,行,这个大家一定要看好了啊,一定要把它好好练习一下,这是咱们spring VC的入门案例,大家说你是不是一定要知道我们当前咱们该如何来处理这个请求,对不对,对吧?你一定要知道我们当前是通过request mapping,然后来决定我们的控制器方法来处理哪一个请求的,你要不然如果你浏览器发送过来的请求你都不知道让哪一个方法来处理,那咱们还有必要继续去处理请求做出响应吗?就没有必要了,OK吧,所以呢,这个答案一定要看好,一定要把咱们当前这个功能呢给实现了啊,好。
我来说两句