SpringMVC 工作原理

0x00:请求流程图

 

首先,来看一下 SpringMVC 的整个请求流程,如下图:

请输入图片描述

0x01:步骤解析

SpringMVC 整体流程步骤解析:

1,用户去单击了某个请求路径,发起了一个 request 请求,这个请求会被 DispatcherServlet 前端控制器处理。

2,前端控制器 DispatcherServlet 去请求处理器映射器 HandlerMapping 去查找 Handler,可以依据注解或者 XML 配置去查找。

3,处理器映射器 HandlerMapping 根据配置找到相应的 Handler,返回给前端控制器 DispatcherServlet,这个 Handler 可能包含 N 个 Interceptor 拦截器。

4,前端控制器 DispatcherServlet 请求处理器适配器 HandlerAdapter 去执行相应的 Handler,也就是 Controller。

5,处理器适配器 HandlerAdapter 执行 Handler。

6,Handler 执行完毕后会返回给处理器适配器 HandlerAdapter 一个 ModelAndView 对象,ModelAndView 是 SpringMVC 底层对象,包括 Model 数据模型和 View 视图信息。

7,处理器适配器 HandlerAdapter 接收到 Handler 返回的 ModelAndView 后,将其返回给前端控制器 DispatcherServlet。

8,前端控制器 DispatcherServlet 接收到 ModelAndView 后,会请求视图解析器 ViewResolver 对视图进行解析。

9,视图解析器 ViewResolver 根据 View 信息匹配到相应的视图结果,反馈给前端控制器 DispatcherServlet。

10,前端控制器 DispatcherServlet 收到 View 具体视图后,进行视图渲染,将 Model 中的模型数据填充到 View 视图中的 request 域,生成最终的视图 View。

11,前端控制器 DispatcherServlet 向用户返回请求结果。

0x02:组件说明

整个处理流程用到的组件有前端控制器 DispatcherServlet、处理器映射器 HandlerMapping、处理器适配器 HandlerAdapter、处理器 Handler、视图解析器 ViewResolver、视图 View。

前端控制器 DispatcherServlet:用来接收用户请求,反馈用户结果。相当于转发器或中央处理器,控制着整个流程的运行,对各个组件进行调度,降低组件之间的耦合性,并且有利于组件之间的扩展。

处理器映射器 HandlerMapping:作用是根据请求的 url 路径,通过组件或者是 xml 配置的方式,去寻找匹配的处理器 Handler 信息。

处理器适配器 HandlerAdapter:作用是根据映射器找到的处理器 Handler 信息,按照特定的规则去执行相关的处理器 Handler。

处理器 Hander:作用是执行相关的请求处理逻辑,并返回相应的数据和视图信息,将其封装到 ModelAndView 对象中。

视图解析器 ViewResolver:作用是进行解析操作,通过 ModelAndView 对象中的 View 信息将逻辑视图名解析成真正的视图 View。

视图 View:就是不同的 View 类型,例如 JSP。

0x03:总结

开发过程中我们需要开发的是 Handler 处理器和 View 视图,但每一步都至关重要,在 SpringMVC 的整个工作流程中,了解它的每一步作用,更有利于日后的学习和理解。


                                                                      公众号推荐:aFa攻防实验室

                         分享关于信息搜集、Web安全、内网安全、代码审计、红蓝对抗、Java、Python等方面的东西。

                                                                         

  • 8
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值