Spring MVC 简介及工作流程

目录

1、简介

2、工作流程及原理

3、相关组件说明

4、疑问与思考


1、简介

SpringMVC是一种基于Spring实现了Web MVC设计模式的请求驱动类型的轻量级Web框架。

使用了MVC架构模式的思想,将web层进行职责解耦,并管理应用所需对象的生命周期,为简化日常开发,提供了很大便利。

SpringMVC提供了:

  • 总开关DispatcherServlet
  • 请求处理映射器(Handler Mapping)
  • 处理适配器(Handler Adapter)
  • 视图解析器(View Resolver)进行视图管理;
  • 动作处理器Controller接口(包含ModelAndView,以及处理请求响应对象request和response)等

配置灵活,支持文件上传,数据简单转化等强大功能。

 


2、工作流程及原理

Spring MVC 简介及工作流程

 

关键步骤:

1、客户请求:客户通过URL发送请求;

2、获取请求相应的controller:核心控制器(DispatcherServlet)接受客户请求(request),然后通过系统或自定义的处理映射器(Handler Mapping),找到对应请求的处理器(Handler),然后,将URL映射的控制器controller返回给核心控制器;

3、执行相应的controller:核心控制器告知处理适配器要执行那个controller,然后,处理适配器执行相应的controller并且得到相应的返回值(数据和试图,ModelAndView);(思考:为什么不直接执行?还要去经过适配器去执行)

4、视图解析:核心控制器将数据和视图交给试图解析器进行解析,返回真正的视图;

5、响应:核心控制器将模型数据填充到视图中,进行渲染展示,最后将响应结果反馈给用户。

 


3、相关组件说明

  • DispatcherServlet:前端控制器,也称为*控制器,它是整个请求响应的控制中心,组件的调用由它统一调度。
  • HandlerMapping:处理器映射器,它根据用户访问的 URL 映射到对应的后端处理器 Handler。也就是说它知道处理用户请求的后端处理器,但是它并不执行后端处理器,而是将处理器告诉给*处理器。
  • HandlerAdapter:处理器适配器,它调用后端处理器中的方法,返回逻辑视图 ModelAndView 对象。
  • ViewResolver:视图解析器,将 ModelAndView 逻辑视图解析为具体的视图(如 JSP)。
  • Handler:后端处理器,对用户具体请求进行处理,也就是我们编写的 Controller 类。

4、疑问与思考

1)为什么不直接执行controller?而是通过处理适配器去执行controller?

参考:实现解耦。

SpringMVC为业务处理器提供了多种接口实现(例如实现了Controller接口),而适配器就是用来根据处理器实现了什么接口,最终选择与已经注册好的不同类型的Handler Adapter进行匹配,并最终执行。

例如,SimpleControllerHandlerAdapter是支持实现了controller接口的控制器,如果自己写的控制器实现了controller接口,那么SimpleControllerHandlerAdapter就会去执行自己写的控制器中的具体方法来完成请求。