ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

SpringMVC执行流程

2021-12-21 15:32:20  阅读:169  来源: 互联网

标签:控制器 DispatcherServlet SpringMVC 流程 视图 Handler 处理器 执行 View


SpringMVC执行流程

首先了解一下SpringMVC整体请求流程和使用到的API类。
SpringMvc框架是高度可匹配的,包含多种视图技术,例如:JSP,FreeMarker、Tiles、iText 和 POI。SpringMvc框架并不关心使用的视图技术,也不会强迫开发者只使用JSP。

SpringMvc执行流程

图 1:Spring MVC执行流程

SpringMvc的执行流程如下:

  1. 用户点击某个请求路径,发起一个HTTP request 请求,该请求会被提交到 DispatcherServlet(前端控制器)。
  2. 前端控制器请求一个或者多个HandlerMapping(处理器映射器),并返回一个执行链(HandlerExecutionChain)。
  3. 前端控制器执行链返回的Handler信息发送给HandlerAdapter(处理器适配器);
  4. 处理器适配器根据Hander信息找到并执行相应的Hander(常称为Controller);
  5. Hander处理完毕之后会返回给处理器适配器一个ModelAndView 对象。(SpringMvc的底层对象,包括Model数据模型和View视图信息);
  6. 处理器适配器接收到ModelAndView 对象后,将其返回给DispatcherServlet (前端控制器);
  7. DispatcherServlet (前端控制器)接收到ModelAndView 对象后,会请求ViewResolver(视图解析器)对视图进行解析;
  8. 视图解析器根据View信息匹配到相应的视图结果,并返回给DispatcherServlet(前端控制器);
  9. DispatcherServlet(前端控制器)接收到具体的View视图后,进行视图渲染,将Model中的模型数据填充到View视图 中的request域,生成最终的View(视图);
    10.视图负责把结果显示到浏览器(客户端)。

Spring MVC接口

SpringMvc涉及到组件有 DispatcherServlet(前端控制器)、HandlerMapping(处理器映射器)、HandlerAdapter(处理器适配器)、Handler(处理器)、ViewResolver(视图解析器)和 View(视图)。下面对各个组件的功能说明如下。
1)DispatcherServlet
DispatcherServlet 是前端控制器,从图 1 可以看出,Spring MVC 的所有请求都要经过 DispatcherServlet 来统一分发。DispatcherServlet 相当于一个转发器或中央处理器,控制整个流程的执行,对各个组件进行统一调度,以降低组件之间的耦合性,有利于组件之间的拓展。
2)HandlerMapping
HandlerMapping 是处理器映射器,其作用是根据请求的 URL 路径,通过注解或者 XML 配置,寻找匹配的处理器(Handler)信息。
3)HandlerAdapter
HandlerAdapter 是处理器适配器,其作用是根据映射器找到的处理器(Handler)信息,按照特定规则执行相关的处理器(Handler)。
4)Handler
Handler 是处理器,和 Java Servlet 扮演的角色一致。其作用是执行相关的请求处理逻辑,并返回相应的数据和视图信息,将其封装至 ModelAndView 对象中。
5)View Resolver
View Resolver 是视图解析器,其作用是进行解析操作,通过 ModelAndView 对象中的 View 信息将逻辑视图名解析成真正的视图 View(如通过一个 JSP 路径返回一个真正的 JSP 页面)。
6)View
View 是视图,其本身是一个接口,实现类支持不同的 View 类型(JSP、FreeMarker、Excel 等)。

标签:控制器,DispatcherServlet,SpringMVC,流程,视图,Handler,处理器,执行,View
来源: https://blog.csdn.net/m0_47073109/article/details/122061488

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有