当前位置: 首页 > 图灵资讯 > 技术篇> SpringMVC框架详解:模型+核心组件+实现原理等详解

SpringMVC框架详解:模型+核心组件+实现原理等详解

来源:图灵教育
时间:2023-07-05 17:34:32

MVC模型

Spring MVC 基于 MVC 因此,理解模式 Spring MVC 需要先对 MVC 了解模式。

MVC是 model、view、以及controler的缩写,是软件开发中常用的架构模式。

MVC各部分按职责分离,使程序结构更加直观,增加了程序的可扩展性、可维护性和可重用性。

MVC三者之间的关系可以用以下图表来表示:

SpringMVC框架详解:模型+核心组件+实现原理等详解_数据

1.模型(Model)

该模型包装了数据和数据操作,可以直接访问数据库,而不依赖视图和控制器,也就是说,该模型不关注如何显示数据,只负责提供数据。GUI 视图通常通过观察者模式通知程序模型中数据的变化 web 中则不会这样。

2.视图(View)

视图从模型中提取数据,只负责显示,没有具体的程序逻辑。

3.控制器(Controller)

控制器用于控制程序的过程,并在视图中显示模型中的数据。

Spring MVC模型

SpringMVC 全名叫 Spring Web MVC,是⼀种基于 Java 的实现 MVC 轻量级Web设计模型要求驱动类型 框架。

SpringMVC是Spring系统结构的一部分,如下图所示:

SpringMVC框架详解:模型+核心组件+实现原理等详解_视图解析器_02

SpringMVC实际上是基于Servlet的MVC模型:

  • 模型:一个或多个javabean对象用于存储数据和业务逻辑。
  • 视图:一个和多个JSP页面,想要控制器提交数据并为模型提供数据显示,JSP页面主要使用HTML标记和Javabean标记来显示数据。
  • 控制器:根据视图提交的要求控制一个或多个Servlet对象,即将要求转发给业务逻辑的javabean,并将处理记录存储在实体模型javabean中,输出到视图显示中。

Spring MVC 本质上可以认为是servlet的包装,简化了我们serlvet的发展。

SpringMVC 5大核心组件

SpringMVC框架详解:模型+核心组件+实现原理等详解_视图解析器_03

1.前端控制器 DispatcherServlet

本质上,Dispatcherservlet是一个Servlet,相当于一个中转站。所有访问都将进入该Servlet,然后根据配置将其转移到相应的Handler中进行处理。获取数据和视图后,使用相应的视图进行响应。

2.处理器映射器 HandlerMapping

本质上,HandlerMaping是一种映射关系,它将访问路径和相应的Handler存储为映射关系,供前端控制器在必要时查阅。

3.处理器适配器 HandlerAdapter

本质上是一种适配器,可以根据要求找到相应的Handler来运行。

由于 Handler 它涉及到具体的用户业务要求,因此工程师通常需要根据业务需求进行开发 Handler。

4.视图分析器(ViewResolver)

本质上,它也是一种映射关系,可以将视图名称映射到真实的视图地址。前端控制器调用处理器,获得model和view,并将view信息传输到视图分析器,以获得真实的view。

5.视图渲染(View)

View是支持不同View类型的接口(jsp、freemarker、pdf...)。本质上,将handler处理器中返回的model数据嵌入到视图解析器分析后获得的页面中,以响应客户端。

SpringMVC5大组件关系
  • DispatcherServlet 控制器入口 负责分发请求
  • HandlerMapping 根据要求负责 找到相应的控制器
  • Controller 真正处理请求的控制器
  • ModelAndView 包装数据信息和视图信息
  • ViewResolver 视图处理器 通过处理找到相应的页面

SpringMVC框架详解:模型+核心组件+实现原理等详解_MVC_04

dispatcherservlet收到请求后,根据handlermaping的配置,调用相应的controller进行处理,controler将处理结果封装成modelandview对象,返回到dispatcherservlet,根据Viewresolver的分析,Dispatcherservlet调用相应的视图对象(如jsp)生成相应的页面。

一言以蔽之,request请求中央控制器——>传输到映射处理器——>转发到指定的controller——>获取数据和view ,组成ModelAndView组件组件——>通过Viewresolver返回到特定的前台页面。

工作原理SpringMVC

工作流程如下图所示:

SpringMVC框架详解:模型+核心组件+实现原理等详解_数据_05

第一步:用户向前端控制器发起请求(DispatcherServlet)

第二步:前端控制器要求处理器映射器(HandlerMappering)查找处理器(Handle):通过xml配置或注释进行搜索

第三步:找到后处理器映射器(HandlerMappering)前端控制器返回执行链(HandlerExecutionChain)

第四步:前端控制器(DispatcherServlet)调用处理器适配器(HandlerAdapter)执行处理器(Handler)

步骤5:处理器适配器执行Handler

第六步:Handler执行后,将处理器适配器返回ModelAndviewew

第七步:处理器适配器将ModelAndviewew返回到前端控制器

第八步:前端控制器要求视图分析器(ViewResolver)视图分析

第九步:视图分析器像前端控制器一样返回View

第十步:前端控制器渲染视图

第十一步:前端控制器对用户响应结果

以上!