Spring框架之我见(四)——Spring MVC

聊完了Spring,咱们来看看Spring在web方面的应用Spring MVC。

MVC

首先咱们来看什么是mvc?前端

你们知道在jsp里面也是能够写java代码的,可是若是咱们这样作就会有一个问题,就是代码所有都杂糅在一块儿,不管是阅读仍是修改都将变得十分的困难。java

MVC是模型(model)-视图(view)-控制器(controller)的缩写,他将咱们的程序分为个三部分,页面、控制层、模型层。这样使咱们的程序的逻辑更清晰,更容易维护。

它以将咱们的业务逻辑、数据与界面显示分离,将众多的业务逻辑汇集到一个部件里面,在须要改进和个性化定制界面及用户交互的同时,不须要从新编写业务逻辑,提升编码效率。web

Spring MVC

Spring MVC 是MVC结构在Spring框架中的一种表现形式。下面咱们来看一下Spring MVC的结构:spring

Spring MVC

由图可知,Spring MVC的具体流程以下:
1. 首先用户发送请求————>前端控制器(DispatcherServlet),前端控制器根据请求信息(如URL)来决定选择哪个页面控制器进行处理并把请求委托给它,即之前的控制器的控制逻辑部分;mvc

2. 页面控制器接收到请求后,进行功能处理,首先须要收集和绑定请求参数到一个对象,并进行验证。而后将命令对象委托给业务对象进行处理;处理完毕后返回一个ModelAndView(模型数据和逻辑视图名);框架

3. 前端控制器收回控制权,而后根据返回的逻辑视图名,选择相应的视图进行渲染(ViewResolver),并把模型数据传入以便视图渲染。jsp

4. 前端控制器再次收回控制权,将响应返回给用户;编码

你们能够把这想象成本身去医院看病的流程,前端控制器(DispatcherServlet)在这里就至关于一个医院前台的做用,咱们看病时首先须要先到前台挂号,而后根据病情被分配到不一样的科室,看完病以后还要再到前台去付钱拿药。spa

Spring和Spring MVC容器之间的关系

咱们理解了Spring和Spring MVC,这里咱们讨论一下Spring容器和Spring MVC容器之间的关系
首先要说明的是:一个项目中,容器不必定只有一个。
Spring容器用于管理Spring中的Bean,而Spring MVC容器用于管理Spring MVC中的Bean。Spring是父容器,Spring MVC是其子容器。而且在Spring MVC子容器中注册的Bean能够引用Spring父容器中注册的Bean,但在Spring容器中注册的Bean却不能引用Spring MVC容器中注册的Bean。对象

这句话听起来有点绕,咱们能够看一下下面这张图,你们能够吧spring容器中的bean理解为全局变量,吧spring MVC容器中的bean理解为局部变量。在方法体中能够访问局部变量和全局变量,可是在方法外,就只能访问全局变量,是不能访问局部变量的。
Spring和Spring MVC容器之间的关系

这里咱们要区分一下哪些bean是须要被SpringMVC管理的,最主要就是控制器(Controller),由于它须要与前端控制器交互。其余的能够都交给spring的容器管理。

下一节咱们来聊聊,Spring的进阶版Spring Boot。

相关文章
相关标签/搜索