0


一文读懂SpringMVC的工作原理

前言

MVC是经典的软件架构设计模式,几乎在各个领域各种开发语言中,均采纳了这个思想。此刻博主突然想到了

Thinking in xxx

系列设计书籍。换句话说,就是

“各人自扫门前雪”

“术业有专攻”

。当职责分配得当后,剩下的就是发挥各

“人”

之所长了。

而SpringMVC继承了这一优良传统,沿袭了其中的核心思想。所以今天博主就来谈谈它是如何做到的,为什么可以引领风骚十几年。

在这里插入图片描述

Q:SpringMVC是如何工作的

Spring的模型-视图-控制器(MVC)框架是围绕一个

DispatcherServlet

来设计的,这个Servlet会把请求分发给各个处理器,并支持可配置的处理器映射、视图渲染、本地化、时区与主题渲染等,甚至还能支持文件上传。

其中,处理器是你的应用中注解了

@Controller

@RequestMapping

的类和方法,Spring为处理器方法提供了极其多样灵活的配置。Spring 3.0以后提供了@Controller注解机制、@PathVariable注解以及一些其他的特性,你可以使用它们来进行RESTful web站点和应用的开发。

“对扩展开放”是Spring MVC框架一个重要的设计原则,而对于Spring的整个完整框架来说,其设计原则是

“对扩展开放,对修改闭合”

。这也是经典的开闭原则的实践之一。

1. SpringMVC交互图

在这里插入图片描述
Spring MVC框架,与其他很多web的MVC框架一样:请求驱动
所有设计都围绕着一个中央Servlet来展开,它负责把所有请求分发到控制器,同时提供其他web应用开发所需要的功能。

2. DispatcherServlet(前端控制器)工作流

下图展示了SpringMVC的

DispatcherServlet

处理请求的工作流,按序查看:

在这里插入图片描述

2.1 发送请求Request

DispatcherServlet

是springMVC的重要部分,位于中心。提供整个框架访问点,起到交换的作用,而且与Spring IoC容器集成。在实际开发中,只需要在web.xml中进行配置,其他组件由框架提供,配置示例如下:

在这里插入图片描述

2.2 处理映射HandlerMapping

HandlerMapping

负责根据用户请求request找到Handler(即处理器)。SpringMVC提供了实现了不同映射方式的多种映射器,例如:配置文件方式,实现接口方式,注解方式等。以下是在spring.xml中,使用自动扫描的形式:

在这里插入图片描述

2.3 处理适配HandlerAdapter

我们的controller类必须继承Controller(base class)或者添加注解

@Controller

,前端控制器才会根据controller类对应的类型调用相应的

HandlerAdapter

,处理客户端的request。

2.4 定义控制类controller

该controller返回一个ModelAndView:
在这里插入图片描述

2.5 视图解析View resolver

View Resolver

负责将处理结果生成View视图。其过程大致是先根据逻辑视图名解析成物理视图名(即具体的页面URL),再生成View视图对象,最后对View进行渲染,将处理结果通过页面展示给用户。大致配置如下:
在这里插入图片描述

2.6 视图View

编写JSP、excel、pdf等可向客户呈现的内容或页面,展示数据。

结语

博主通过一文对SpringMVC架构尝试解读,按运行时序解剖SpringMVC的每个关键步骤是

“做什么的”

“如何做的”

。相信你能够从中get到它的核心运行逻辑,并基于此搭建可靠的开发框架。


在这里插入图片描述

标签: spring springmvc mvc

本文转载自: https://blog.csdn.net/splendid_java/article/details/142046908
版权归原作者 一叶飞舟 所有, 如有侵权,请联系我们删除。

“一文读懂SpringMVC的工作原理”的评论:

还没有评论