SpringMVC的工作流程
一、概述
Spring MVC 是 Spring 框架中的一个模块,它是一个基于 MVC(Model-View-Controller)架构的 Web 框架,用于构建 Web 应用程序。Spring MVC 提供了一种灵活、可扩展的方式来处理 Web 请求和响应,将业务逻辑与视图解耦,使开发人员可以更专注于业务逻辑的实现。
二、作用
为web开发提供解决方案,取代简化servlet。处理请求、响应。
三、MVC
在 Spring MVC 中,MVC(Model-View-Controller)模式的解析是指将请求的处理流程分为三个主要的组件:模型(Model)、视图(View)和控制器(Controller)。
-
模型(Model):模型表示应用程序的数据和业务逻辑。它负责处理数据的获取、存储和操作,并提供给视图进行展示。在 Spring MVC 中,模型通常是一个 POJO(Plain Old Java Object)类,可以通过注解(如 @ModelAttribute)将其绑定到请求参数上。
-
视图(View):视图负责将模型的数据展示给用户。它可以是一个 JSP、Thymeleaf、Freemarker 等模板文件,也可以是一个 JSON、XML 等数据格式。在 Spring MVC 中,视图解析器(ViewResolver)负责将逻辑视图名解析为具体的视图对象,并将模型数据渲染为最终的响应内容。
-
控制器(Controller):控制器负责处理请求并返回适当的响应。它接收用户的请求,处理请求参数的绑定和验证,并调用适当的业务逻辑处理方法。在 Spring MVC 中,控制器通常是一个带有 @Controller 注解的类,其中的处理方法使用 @RequestMapping 注解进行映射。
四、工作流程
-
流程图
-
流程解析
(1)用户在浏览器中输入 URL 或通过点击链接等方式发送请求到服务器,被前端控制器DispatcherServlet拦截进行处理。
(2)DispatcherServlet 接收请求后调用处理器映射器(HandlerMapping)。
(3)处理器映射器(HandlerMapping)匹配处理器(查找xml配置或注解配置),生成处理器对象及处理器拦截器,再一起返回给DispatcherServlet。
(4)DispatcherServlet调用处理器适配器(HandlerAdapter)。
(5)处理器适配器(HandlerAdapter)调用处理器,DispatcherServlet 通过处理器适配器(Handler Adapter)来调用对应处理器的方法,并传递请求参数。
(6)Controller执行完成返回ModelAndView对象。
(7)HandlerAdapter将Controller执行结果ModelAndView返回给DispatcherServlet。
(8)DispatcherServlet将ModelAndView传给ViewReslover(视图解析器)请求视图解析。
(9)ViewReslover解析ModelAndView后返回具体View(视图)给DispatcherServlet。
(10)DispatcherServlet根据View进行渲染视图(即将模型数据填充至视图中)。
(11)DispatcherServlet响应View给用户。
-
总结
在整个流程中,DispatcherServlet 起到了核心的作用,负责接收请求、调度处理器、解析视图等工作。处理器映射器和视图解析器则负责将请求映射到具体的处理器和解析视图。处理器适配器负责将请求参数传递给处理器。处理器执行业务逻辑后,将处理结果封装为模型对象,并返回视图名。视图解析器将视图名解析为具体的视图对象,最终渲染为响应内容返回给客户端。
通过这样的工作流程,Spring MVC 实现了请求的分发和处理,将业务逻辑与视图解耦,提供了一种灵活、可扩展的方式来构建 Web 应用程序。