1. 首先用户发送请求,DispatcherServlet实现了Servlet接口
  2. 获取url请求对应的处理方法,遍历handlerMappings列表,获取对象HandlerExecutionChain(包含一个处理器 handler 如HandlerMethod 对象、多个 HandlerInterceptor 拦截器对象),遍历handlerMappings列表,针对每个handlerMapping试图获取HandlerExecutionChain,一旦成功,即返回
  3. 获取对应的 HandlerAdapter,HandlerAdapter 将会把步骤2中的handler包装为适配器,从而支持多种类型的处理器,即适配器设计模式的应用,从而很容易支持很多类型的处理器。DispatcherServlet中的HandlerAdapter列表如图中所列的3种,依次遍历,调用HanderAdapter.supports判断是否支持。
  4. 调用Controller的具体方法处理请求,并返回一个 ModelAndView。HandlerAdapter会为每一个请求生成一个ServletInvocableHandlerMethod实例,核心方法invokeAndHandle,包括输入参数的处理和返回数据的解析。
  5. 渲染
  6. 返回

前端控制器(DispatcherServlet):接收用户请求并返回请求结果。它的作用相当于一个转发器或中央处理器,控制整个执行流程,对各逐渐进行调度降低组件之间的耦合。

处理器映射器(HandlerMapping):根据用户请求的URL,通过注解或者XML配置,查找相应的处理器Handler

处理器适配(HandlerAdapter):根据映射器查找出的Handler,完成调用处理器中的方法

处理器(Handler):请求处理的具体逻辑,返回数据和视图信息

视图解析器(View Resolver):解析具体视图,通过ModelAndView对象中的View信息,将逻辑视图名解析成真正的视图View

出处:

HttpMessageCoverter

spring reference RequestBody

segmentfault: springMVC流程解析

深入浅出spring】Spring MVC 流程解析 -- HanndlerMapping

【深入浅出spring】Spring MVC 流程解析 -- HandlerAdapter

【深入浅出spring】Spring MVC 流程解析 -- InvocableHandlerMethod

最新文章

  1. tomcat之一:指定tomcat运行时JDK版本
  2. Discuz的安装 (原创帖,转载请注明出处)
  3. 1.3 Content Provider
  4. iOS 自定义Actionsheet
  5. IOS动态判断UITextField是否输入为手机号
  6. 3DES封装类
  7. html5优势
  8. linux学习笔记2-命令总结1
  9. Android———从GitHub上下载源码的方法【Written By KillerLegend】
  10. Netsharp快速入门(之15) 销售管理(报表B 销售季度表)
  11. HDU-2686 Matrix 多进程DP
  12. 微信小程序的一些限制
  13. dump 验证实例恢复的起点和终点
  14. 浅谈Web Api配合SignalR的跨域支持
  15. SubLime BracketHighlighter 配置
  16. CentOS 虚拟机安装详解
  17. Linux动态频率调节系统CPUFreq之二:核心(core)架构与API
  18. Tornado-基于正则的路由和动态分页
  19. ORACLE数据库_迁移(新机器,新存储)
  20. adb command

热门文章

  1. (原)关于获取ffmpeg解析rtsp流sdp中带有sps,pps的情况
  2. js实现滑动的弹性导航
  3. json 字符串包含数组转换为object对象是报异常java.lang.ClassCastException: net.sf.ezmorph.bean.MorphDynaBean cannot be cast to
  4. [PGM] Temporal Models
  5. 8 -- 深入使用Spring -- 6... Spring的事务
  6. Fiddler 简介
  7. Android 安全机制
  8. B - 考试排名
  9. .NET Core开发日志——Startup
  10. CH 1201 - 最大子序和 - [单调队列]