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

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

MVC

首先我们来看什么是mvc?

大家知道在jsp里面也是可以写java代码的,但是如果我们这样做就会有一个问题,就是代码全部都杂糅在一起,无论是阅读还是修改都将变得十分的困难。

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

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

Spring MVC

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

Spring MVC

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

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

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

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

大家可以把这想象成自己去医院看病的流程,前端控制器(DispatcherServlet)在这里就相当于一个医院前台的作用,我们看病时首先需要先到前台挂号,然后根据病情被分配到不同的科室,看完病之后还要再到前台去付钱拿药。

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。

最后我把我收集的各大厂经典高频面试题和Java高级进阶、架构师视频教程送予大家。部分资料如下图所示:

获取地址:java进阶学习资料,面试题,电子书籍免费获取

在这里插入图片描述

img

img

img

img

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值