SpringMVC
开发工具与关键技术:IDEA与Java
作者:甘伟良
撰写时间:2022/2/26
mvc设计模式
MVC 设计不仅限于 Java Web 应用,还包括许多应用,比如前端、PHP、.NET 等语言。之所以那么做的根本原因在于各个模块的解耦。
MVC 是 Model、View 和 Controller 的缩写,分别代表 Web 应用程序中的 3 种职责
模型:用于存储数据以及处理用户请求的业务逻辑
视图:向控制器提交数据,显示模型中的数据
控制器:根据视图提出的请求判断将请求和数据交给哪个模型处理,将处理后的有关结果交给哪个视图更新显示
Spring MVC
Spring MVC 实现了即用的 MVC 的核心概念。它为控制器和处理程序提供了大量与此模式相关的功能。并且当向 MVC 添加反转控制(Inversion of Control,IoC)时,它使应用程序高度解耦,提供了通过简单的配置更改即可动态更改组件的灵活性。
Spring MVC 框架是高度可配置的,包含多种视图技术,例如 JSP 、Velocity、themlefy等。SpringMVC 框架并不关心使用的视图技术,也不会强迫开发者只使用 JSP 技术,但教程中使用的视图是 JSP。
本节主要介绍 Spring MVC 框架处理用户请求的完整流程和处理中包含的 4 个接口
Spring MVC重点掌握的4个接口
-
DispatcherServlet
Spring MVC 所有的请求都经过 DispatcherServlet 来统一分发,在 DispatcherServlet 将请求分发给Controller之前需要借助 Spring MVC 提供的 HandlerMapping 定位到具体的 Controller -
HandlerMapping
HandlerMapping 接口负责完成客户请求到 Controller 映射 -
Controller
Controller接口将处理用户请求,这和 Java Servlet 扮演的角色是一致的。一旦 Controller 处理完用户请求,将返ModelAndView 对象给 DispatcherServlet 前端控制器,ModelAndView 中包含了模型(Model)和视图(View)。从宏观角度看DispatcherServlet是整个 Web 应用的控制器;从
微观考虑,Controller 是单个 Http 请求处理过程中的控制器,而ModelAndView 是 Http 请求过程中返回的模型(Model)和视图(View) -
ViewResolver
ViewResolver 接口(视图解析器)在 Web 应用中负责查找 View 对象,从而将相应结果渲染给用户
Spring MVC 的工作流程
- 用户发送请求至前端控制器DispatcherServlet
- DispatcherServlet收到请求,调用HandlerMapping处理器映射器
- 处理器映射器找到具体的处理器,生成处理器对象及处理器拦截器一并返回给DispatcherServlet
- DispatcherServlet调用HandlerAdapter适配器。
- HandlerAdapter经过适配调用具体的处理器(一般是开发人员编写的Controller)
- Controller执行完成返回ModelAndView
- HandlerAdapter将Controller执行结果ModelAndView返回给DispatcherServlet
- DispatcherServlet将ModelAndView传给ViewReslover视图解析器。
- ViewReslover解析后返回具体View
- DispatcherServlet根据View进行渲染视图
- DispatcherServlet响应用户