00:00
好,那到此呢,咱们的spring咱们就讲完了,那下面的呢,咱们就来学习一下咱们的spring VC,好,那在我们的SSM整合中呢,大家都知道my be担任的角色是一个持久层框架,它能够帮助我们来访问数据库,然后来操作数据库中的数据。好,那spring呢,它可以利用它的两大核心,然后来进行一个整合框架的功能,就比如说呀,它的两大核心之1IOCIOC用来管理对象,那所以在spring去整合第三方框架,比如说买be的时候,咱们是不是就可以把其中的一些对象交给IC容器来管理,就比如说我们操作数据库的对象circle session,还有就是我们去执行circle语句的一个对象,对吧,直接就是我们的一个map接口的对象,那咱们现在只要把这些对象呢,直接交给IOC容器来管理,那我们在哪个地方需要来使用,那我们是不是直接做通过自动装配的方式就可以来获取它,OK吧,好,还有就是咱们的A的一个重要应用,叫做声明式事物,那我们的my be里面的事物是不是就可以交给声明式事物来实现?
01:08
好,然后呢,我们再来看这个spring VC,那spring VC它是一个什么样的框架呢?其实咱们从名字上就能够看出来,Spring mvc,所以说这是我们当前spring中来实现MVC功能的一个框架,那首先什么是MVC呢?大家来看这个之前大家应该都学过,对吧?MVC呢是一种软件架构的思想,大家注意这是一种思想啊,有的人认为这是一种设计模式,但是不是,这是一种思想,然后思想的话就是说我们在实现这个功能的时候,我们必须要按照这个思想来实现。好,然后将软件按照模型视图,然后控制器来进行划分,这个M呢,它指的是model,指的是模型层,它指的是咱们工程中的Java b,大家注意Java b啊,它的作用是用来干嘛处理数据,所以说我们的Java b呢,它就分为两类,一类是我们存储数据的什么实体类,然后一种是我们来处理数据的业务类,就比如说咱们的service和DAO,对吧,它是用来处理业务逻辑的,它是用来进行持久化操作的,所以说大家看好了,像这些的话,它都属于咱们的业务类啊,所以说呢,这个model大家注意,它指的有两方面,一方面是存储数据的实体类来存储数据,还有一方面就是我们来处理数据的业务类,比如说咱们的service,还有DAO,好,下面呢,我们再来看这个VV指的是view,指的是视图,那这个的话简单,其实指的就是我们工程中的HTML,然后或者说是GSP页面,对吧,它的作用是用来。
02:43
干嘛的,其实就是帮助我们与用户来进行交互,比如说我们发送请求,咱们是不是要从页面中发送,然后呢,我们最终处理完请求之后,我们是不是还要把咱们这个服务器响应的结果给用户展示在页面中,所以说view指的是视图层,它的作用是用来干嘛与用户进行交互,来展示数据,好,然后最后一个叫做C,叫做controller controller呢是控制层,它指的是我们工程中的solve。
03:13
对吧,然后它的作用是用来干嘛的,大家想想你原来你的solve是干什么的,处理请求和响应吧,对不对,所以说这个controller大家注意,它的作用就是接收请求和响应浏览器啊,这样的一个功能啊好。那这是咱们的MVC,那MVC它到底是如何来进行工作的呢?大家注意,首先呢,我们的用户通过视图层来发送请求到服务器,那在服务器中咱们由谁来接收请求啊,由controller层来接收请求,然后controller再去调用我们当前处理数据的这个业务类,也就是咱们的service,还有DAO对吧?然后来处理业务逻辑,然后处理之后呢,再把结果呢,返回给我们当前的controller。然后呢,在control里面,咱们再根据这个请求啊,然后把咱们当前请求处理的这个结果呢,找到相应的这个视图,把最终的数据呢,渲染之后展示在我们的视图中,然后大家注意就这样的一个过程,这就是咱们MVC的一个工作流程,大家其实想想我们之前呢,然后咱们在学习solve的时候,其实我们就是这样的一个过程啊,对不对,来处理一个完整的请求和响应。
04:25
好。那我们知道了什么是MVC之后,那下面呢,我们再来看一下什么是spring mvc spring mvc呢是spring的一个后续产品,是spring的一个子项目,Spring VC是为表述层,大家注意为表述层开发提供的一套一整套完备的解决方案,那首先什么叫做表述层呢?大家想一下表述层是什么,那这就要提到我们之前学习过的三层架构了,咱们的三层架构里面呢,就有表述层。业务层,还有咱们的持久层。
05:03
所以说呢,有的同学可能会认为这个三层架构是控制层,业务层,持久层,大家注意它不对啊,三层架构呢,是表述层,也叫做表示层,然后还有业务层,还有持久层,那表述层又包含什么?包含咱们的前台页面和后台的solve。OK吧,所以说呢,表述层里面大家一定要看好了,它不单有咱们的serve处理请求和响应,还有就是我们当前的页面来展示数据这样的啊,好,然后呢,我们再往下在表述层框架呢,历了什么?历经了truts web work,还有TRUTS2等诸多产品的历代更迭之后,然后目前我们所选择使用谁呀,SPVC来作为我们的Java e项目表述层开发的首选方案。好,那所以说呢,在这里,在这一句话里面,我们是不是就能够看出来,Spring VC来解决的问题是表述层的问题,那咱们在表述层里面,咱们都能够干什么呢?大家想想,其实就是我们的页面和我们的solve呗,对不对?那我们的页面是不是可以来发送请求,然后到我们的控制层,咱们的控制层里面是不是就可以来处理请求,比如说来设置编码,然后来获取请求参数,往域对象中去共享数据,然后呢,再来实现我们的页面跳转,然后渲染页面,跳转到指定渲染视图,然后跳转到指定页面,对不对?好,所以说我们原来咱们在solve里面大家能实现的功能,我们现在在spring VC里面也可以实现,为什么?其实因为咱们的VC啊,它封装的就是solvele。
06:40
这个大家注意,Spring VC其实它封装的就是solvele啊好,那所以说有一点好的,就是说我们现在呀,咱们用了spring VC之后,大家还需要自己手动创建serve吗?不需要,所以他就把咱们serve里面能实现的功能呢进行了封装,我们只需要按照spring VC为我们所提供的方式,我们就可以来获取咱们请求相关的数据,然后并且呢,然后以spring VC的方式来响应浏览器,这个大家注意啊,好,但是万变不离其宗,它封装的还是solvele,也就是说大家不管你看到什么样的一个功能,对吧,它其实底层它的实现都是通过solve let实现的。
07:20
就比如说你可以在spring VC里面,然后来获取一个请求参数,那它的方式呢,跟咱们之前的solve的方式不一样,因为毕竟我们现在咱们创建的并不是solve let solvele呢,已经被spring VC进行了封装了啊,大家注意,那所以说呢,我们在spring VC中你能获取请求参数,那你放心它在底层里面,它使用的是什么来获取的,就是request.get parameter来获取的,我们最终能实现转发,那大家放心,它的底层一定是通过request.get request dispature.forward的方法来实现的。OK吧,好,这个大家注意行,然后下面呢,我们再来看一下spring mvc的特点,对吧?首先呢,大家来看它是spring家族的原生产品。
08:08
对吧,也就是说我们spring VC本身就是spring的一个后续产品,一个子项目,对不对,所以说它是家族的原生产品啊,它与IOC容器等基础设施无缝对接,对吧?什么意思?大家注意,就是我们的spring VC这个框架该怎么搭建,它的配置文件跟咱们的spring的配置文件是一模一样的,只不过就是里面我们用到的命名空间可能有所区别。因为本身这个东西,它就是spring框架的一个后续产品嘛,对不对,所以说他也是在我们spring的基础上来进行来进行搭建的,这个大家注意啊好。然后呢,我们再往下,然后基于原生的solve that,大家看这就是我跟大家说过的,对吧,然后它封装的其实就是solve let,然后通过功能强大的前端控制器dispatal solve that对请求和响应来进行统一处理,这句话是什么意思?大家注意,就是说我们spring Mac,然后它它在封装solve light的时候,然后把咱们的solve的功能呢,封装成了一个什么呀,前端控制器叫做dispat solve light,然后这个东西就可以对我们浏览器发送的服务器的请求和响应对不对,然后统一来进行处理,也就是说我们现在还需不需要自己创建solve light了,不需要,我们所有的请求和响应都是通过dispature solve light来进行处理的,好,然后呢,所以说我们只需要干什么呢?按照spring VC的要求,然后来创建咱们的控制层,那我们想要什么数据,我们直接来获取就行,我们还需不需要像原来我们的solve light里面一样,对吧?
09:46
request.get parameter request.set attribute request.get request dispat.forward还需不需要这样的?不需要,像这些原生的代码咱们就不需要去写了,因为像这些代码它其实都是封装到了咱们的dispatch solve里面,OK吧,所以我们只需要通过spring为我们spring mvc为我们所提供的一些简单的方式,咱们就可以直接来获取我们所需要的数据,或者说我们就可以直接来实现一个转发或重定向的效果。
10:19
比如说啊,给大家简单举个例子,你看我们原来在solve里面,大家是怎么来获取请求参数的,Request get parameter,那我们现在在SPVC里面怎么获取请求参数?大家注意,非常简单,我们只要在控制器在在我们的控制层中去创建一个方法,然后在这个方法里面,我们只要去设置一个参数,然后让这个参数跟咱们的请求参数的名字一致,那我们就可以直接获取这个请求参数,非常简单啊好,那我们怎么来实现转发?很简单,我们在spring VC里面有一个东西叫视图,叫做视,叫做视图解析器,然后我们只需要去设置一个将我们当前这个控制层里面的方法来设置一个字符串类型的返回值,然后这个字符串就可以直接去匹配到我们相对应的视图来实现转发的效果。
11:13
非常方便啊,好OK,当然了,咱们用到框架之后,那肯定是越用越简单,不可能说你用到框架之后越用越麻烦,对不对,好OK,来,那下面呢,我们再接着往下这个表述层,各细分领域需要解决的问题全方位覆盖,然后提供全面解决方案,这不就是我们刚才所说的嘛,对吧?我们在表述层里面,我们之前能实现的功能,现在咱们通过spring VC也能够实现,而且咱们在spring VC中来实现功能的过程呢,要更简单一些。好,OK,再往下,代码清晰简洁对吧?然后大幅度提升开发效率是不是啊,好,这个大家注意,咱们刚才也跟大家说的确实很简单,比如说我跟大家说的获取请求参数对吧?然后还有就是我们来实现转发重定项对吧?然后都不需要我们在使用咱们原来的原生代码了,咱们只要来使用spring VC中为我们所提供的方式就行。好,然后再往下,然后内部组件程度,内部组件化程度高,然后可插拔式组件,即插即用,想要什么功能呢?配置相应组件即可,也就是说我们在使用我们的SPA Mac里面的一些功能的时候,比如说咱们后边的一些什么异常处理器。
12:28
对吧,视图控制器,然后还有咱们的这个什么这个拦截器,对不对,你像这些功能的时候,大家注意我们需不需要去额外去写很多很多的代码,不需要,我们只需要在spring mvc的配置文件中,你去配置我们相对应的组件就行。对吧,你只要把这个组件配置出来,它就有效果,那你配不配置它就没有效果,所以说大家注意组件化程度高,可插拔式组件,即插即用,就是说你只要配置咱们就能用,你如果说没有配置的话,咱们就用不了,哎,这个大家注意非常的方便,好咱们需不需要去额外的去写很多的代码来实现这些功能呢?不需要,咱们只需要在配置文件里面去配置一下就行啊,好,然后性能卓著对不对,然后尤其适合现代大型超大型互联网项目要求啊,换句话来说就是说我们现在目前市场上用的最多的这个MVC框架就是spring mvc。
13:26
好啊,行,那我们现在呢。咱们已经知道了什么是spring VC了。也知道了它的一些特点,那下面呢,咱们就来创建一个入门案例,然后咱们来测试一下呗,看咱们的spring VC呢,然后用完之后大家去感受一下对吧,然后它是不是要比我们之前咱们单独用solve要简单一些啊,好OK。
我来说两句