SpringMVC工作流程与组件

42 阅读3分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第17天,点击查看活动详情

哈喽,大家好!我是Why,一名在读学生,目前刚刚开始进入自己的编程学习生涯。虽然学习起步较晚,但我坚信做了才有0或1的可能。学了一段时间以后也是选择在掘金上分享自己的日常笔记,也希望能够在众多道友的大家庭中打成一片。 本文主要讲解SpringMVC工作流程与组件,如果大家读后觉得有用的话,还请大家多多支持博主:欢迎 ❤️点赞👍、收藏⭐、留言💬 ✨✨✨个人主页:JinHuan

SpringMVC工作流程

工作流程分析

image-20220714234115625

1、用户通过浏览发送请求到前端控制器DispatcherServlet

2、前端控制器直接将请求转给处理映射器HandlerMapping

3、处理器映射器HandlerMapping会根据请求,找到负责处理该请求的吃力气,并将其封装为处理器执行链HandlerExcutionChina后返回给前端处理器DispatcherServlet

4、前端处理器DispatcherServlet根据处理器执行链中的处理器,找到能够执行该处理器的处理器适配器HandlerAdapter

5、处理器适配器HandlerAdapter调用执行处理器Controller

6、处理器Controller将处理结果及要跳转的视图封装到一个对象ModelAndView中,并将其返回给处理器适配器HandlerAdapter

7、处理器适配器直接将结果返回给前端控制器DispatcherServlet

8、前端控制器调用视图解析器,将ModelAndView中的视图名成封装为试图对象

9、视图解析器ViewResolver将封装了的视图View对象返回给前端控制器DispatcherServlet

10、前端控制器DispatcherServlet调用视图对象,将其自己进行渲染,即进行数据填充,形成响应对象

11、前端控制器响应浏览器。

SpringMVC组件

1、DispatcherServlet:前端控制器,也称作中央/核心控制器

用户请求的入口控制器,它相当于MVC模式中的C,DIspatcherServlet;儿童是整个流程控制的中心,相当于是SpringMVC的大脑,由它调用其他组件处理用户的请求,DispatcherServlet的存在降低了组件之间的耦合性。SpringMVC框架提供的核心控制器需要我们在web.xml文件中配置。

2、HandlerMapping:处理映射器

HandlerMapping也是控制器,派发请求的控制器,我们不需要自己控制该类,但是它是springmvc运行历程中的一个重要的控制器。HandlerMapping负责根据用户请求找到Handler即处理器(也就是我们说的Controller),SpringMVC提供了不同的映射器实现不同的映射方式,例如:配置文件方式,实现接口方式,注解方式等,在实际的开发中,我们常用的就是注解方式

3、Handler:处理器

Handler是继DispatcherServlet前端控制器的后端控制器,在DispatcherServlet的控制下Handler对具体的用户请求进行处理。由Handler涉及到具体的用户请求,所以一般情况需要程序员根据业务需求开发Handler。(这里说的Handler就是指我们说的Controller)

4、HandlerAdpater

通过HandlerAdapter对处理器进行执行,这里是适配器模式的应用,通过扩展处理器适配器,支持更多类型的处理器,调用处理器传递参数等工作

5、ViewResolver:视图解析器

ViewResolver负责将处理结果生成View视图,ViewResolver首先根据逻辑视图名解析成物理视图名称,即具体的页面地址,再生成View视图对象,最后对View进行渲染将处理结果通过页面展示给用户。SpringMVC框架提供了很多的View视图类型,包括jstlView、freemarkerView、pdfView等。一般情况下需要通过页面标签或者页面模板技术将模型数据通过页面展示给用户,需要由程序员根据业务需求开发具体的页面