【Spring】SpringMVC的执行流程和相关组件


执行流程

流程图:

在这里插入图片描述

文字流程:

1、 用户发送请求至前端控制器DispatcherServlet。
2、 DispatcherServlet收到请求调用HandlerMapping处理器映射器。
3、 处理器映射器找到具体的处理器(可以根据xml配置、注解进行查找),生成处理器对象及处理器拦截 器(如果有则生成)一并返回给DispatcherServlet。
4、 DispatcherServlet调用HandlerAdapter处理器适配器。
5、 HandlerAdapter经过适配调用具体的处理器(Controller,也叫后端控制器)。
6、 Controller执行完成返回ModelAndView。
7、 HandlerAdapter将controller执行结果ModelAndView返回给DispatcherServlet。
8、 DispatcherServlet将ModelAndView传给ViewReslover视图解析器。
9、 ViewReslover解析后返回具体View。
10、DispatcherServlet根据View进行渲染视图(即将模型数据填充至视图中)。
11、 DispatcherServlet响应用户。

主要组件

1.DispatcherServlet
这个控件是SpringMVC 最核心的一个控件,本质上是一个Servlet,相当于一个中转站,所有的访问都会走到这个Servlet中,再根据配置进行中转到相应的Handler中进行处理,获取到数据和视图后,在使用相应视图做出响应。

2、HandlerMapping
initHandlerMappings(context),处理器映射器,根据⽤户请求的资源uri来查找Handler的。在 SpringMVC中会有很多请求,每个请求都需要⼀个Handler处理,具体接收到⼀个请求之后使⽤哪个 Handler进⾏,这就是HandlerMapping需要做的事。

3、HandlerAdapter
initHandlerAdapters(context),适配器。因为SpringMVC中的Handler可以是任意的形式,只要能处理 请求就ok,但是Servlet需要的处理⽅法的结构却是固定的,都是以request和response为参数的⽅法。
如何让固定的Servlet处理⽅法调⽤灵活的Handler来进⾏处理呢?这就是HandlerAdapter要做的事情。
Handler是⽤来⼲活的⼯具;HandlerMapping⽤于根据需要⼲的活找到相应的⼯具;HandlerAdapter 是使⽤⼯具⼲活的⼈。

4、Handler:也就是处理器。它直接应对着MVC中的C也就是Controller层,它的具体表现形式有很多,可 以是类,也可以是⽅法。在Controller层中@RequestMapping标注的所有⽅法都可以看成是⼀个 Handler,只要可以实际处理请求就可以是Handler

5、ViewResolver
initViewResolvers(context),ViewResolver⽤来将String类型的视图名和Locale解析为View类型的视 图。View是⽤来渲染⻚⾯的,也就是将程序返回的参数填⼊模板⾥,⽣成html(也可能是其它类型)⽂ 件。这⾥就有两个关键问题:使⽤哪个模板?⽤什么技术(规则)填⼊参数?这其实是ViewResolver主 要要做的⼯作,ViewResolver需要找到渲染所⽤的模板和所⽤的技术(也就是视图的类型)进⾏渲染, 具体的渲染过程则交由不同的视图⾃⼰完成。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Spring MVC执行流程主要涉及以下几个步骤: 1. 客户端发送请求:浏览器或其他客户端向服务器发送HTTP请求。 2. 前端控制器接收请求:DispatcherServlet作为前端控制器接收到客户端的请求。 3. 处理器映射器进行映射:DispatcherServlet调用处理器映射器(HandlerMapping)来进行URL与处理器的映射,确定处理该请求的Controller。 4. 处理器适配器调用处理器:DispatcherServlet调用处理器适配器(HandlerAdapter)来执行Controller中的相应方法,并传递相应的请求参数。 5. 处理器执行业务逻辑:Controller中的方法执行业务逻辑,并返回一个ModelAndView对象。 6. 视图解析器解析视图:DispatcherServlet调用视图解析器(ViewResolver)来解析Controller返回的视图名,得到具体的视图对象。 7. 视图渲染:视图对象负责渲染最终的视图结果,将数据填充到视图中,并生成最终的HTML响应。 8. 响应返回给客户端:DispatcherServlet将最终生成的HTML响应返回给客户端。 在这个流程中,各个组件的作用如下: - DispatcherServlet:作为前端控制器,接收客户端请求,并将请求转发给对应的处理器。 - HandlerMapping:处理器映射器,根据请求的URL确定处理该请求的Controller。 - HandlerAdapter:处理器适配器,根据Controller的类型调用相应的方法来执行业务逻辑。 - Controller:处理器,负责处理业务逻辑,通常是一个POJO类。 - ModelAndView:存储处理结果数据和视图的对象。 - ViewResolver:视图解析器,根据视图名解析出具体的视图对象。 - View:负责渲染最终的视图结果,通常是一个JSP或HTML页面。 这些组件协同工作,完成了Spring MVC执行流程

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

张_Laura

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值