springMVC流程控制

SpringMVC流程

  1. web.xml 中配置 org.springframework.web.servlet.DispatcherServlet 这一步其实和spring mvc没有关系,可理解为一个普通的servlet的配置

  2. 客户端请求抵达前端控制器【又称为中央控制器】DispatcherServlet

  3. DispatcherServlet根据请求路径【path】去请求处理器映射器HandlerMappering,【HandlerMappering是在spring ioc容器加载时创建的,不了解的可以查看文章spring ioc & wb 宿主,创建时会遍历所有bean,把含有RequestMapping注解的方法和其value值建立映射关系】,所以现在可以根据path直接找到对应的handler【即controller中的某个标有RequestMapping注解的方法】,把hander和对应的HanderInterceptor【如果有】一起作为一个HandlerExecutionChain返回

  4. 根据HandlerExecutionChain中的hander的类型,查到合适的HanderAdapter去处理【HanderAdapter也是在springioc容器加载时创建的】,用到了适配器模式,方便后续扩展

  5. 根据合适的HandlerAdapter去执行handler【即controller中带有RequestMapping的注解的方法】

  6. Handler执行完后给处理器适配器HandlerAdapter返回ModelAndView,同样handlerAdapter把ModelAndView返回给前端控制器DispatcherServlet

  7. 前端控制器请求最后调用processDispatchResult针对返回的结果ModelAndView进行处理,也就是调用视图解析器(ViewResolver)去进行视图解析,如果此时Hander返回的不是ModelAndView【API接口返回JSON数据时Handler一般返回的是一个实体对象而不是ModelAndView,那么ModelAndView就是Null】,如果ModelAndView是Null,则此时处理流程处理就已经完成了

  8. 如果ModelAndView不为Null,则视图解析器ViewResolver根据ModelAndView向前端控制器返回View【真正的物理视图】

  9. 前端控制器对视图进行渲染,调用其Render方法开始解析视图

  10. 前端控制器向用户响应结果

总结

springMVC的流程比较复杂,我们可以把其拆分成几个具体的组件逐个学习,比如 前端控制器(DispatcherServlet)、处理器映射器(HandlerMapping)、处理器(Handler)、处理器适配器(HandlerAdapter)、视图解析器(ViewResovler)。

后续我们也将针对这些组件逐个进行讲解……………

微信公众号:宋坤明
如果您觉得对您有所帮助,记得转发点赞哦
如有问题或建议,请公众号留言或者直接微信联系我
下面的是我的公众号二维码图片,欢迎关注我。

图注:宋坤明公众号

springMVC 流程的更多相关文章

  1. SpringMVC 流程 配置 接口

    SpringMVC简介    一 流程介绍 1.角色划分 前端控制器(DispatcherServlet).请求到处理器映射(HandlerMapping).处理器适配器(HandlerAdapter ...

  2. 04springMVC结构,mvc模式,spring-mvc流程,spring-mvc的第一个例子,三种handlerMapping,几种控制器,springmvc基于注解的开发,文件上传,拦截器,s

     1. Spring-mvc介绍 1.1市面上流行的框架 Struts2(比较多) Springmvc(比较多而且属于上升的趋势) Struts1(即将被淘汰) 其他 1.2  spring-mv ...

  3. SpringMVC流程架构基础理论

    Spring web mvc和Struts2都属于表现层的框架 1. 用户发起request请求至控制器(Controller) 控制接收用户请求的数据,委托给模型进行处理 2. 控制器通过模型(Mo ...

  4. 1.1(Spring MVC学习笔记)初识SpringMVC及SpringMVC流程

    一.Spring MVC Spring MVC是Spring提供的一个实现了web MVC设计模式的轻量级Web框架. Spring优点:网上有,此处不复述. 二.第一个Spring MVC 2.1首 ...

  5. SpringMVC流程架构图

    [组件说明] 以下组件通常使用框架提供实现: 1.DisPatcherServlet:前端控制器(不需要程序员开发) 用户请求到达前端控制器,它相当于MVC模式中的C(Controller),Disp ...

  6. springmvc流程 struts2 spring Hibernate 优缺点 使用场景介绍

    为什么使用HandlerAdapter? SpringMVC使用一个Servlet(DispacherServlet)代理所有的请求 , SpringMVC中的处理器是方法级别的处理器,而非类级别的处 ...

  7. SpringMVC流程

    Spring工作流程描述 1. 用户向服务器发送请求,请求被Spring 前端控制Servelt DispatcherServlet捕获: 2. DispatcherServlet对请求URL进行解析 ...

  8. SpringMVC(流程+第一个Demo)

    一.流程图 用户发送请求至前端控制器DispatcherServlet DispatcherServlet收到请求调用HandlerMapping处理器映射器. 处理器映射器根据请求url找到具体的处 ...

  9. SpringMvc流程分析,简单源码分析

    SpringMvc的请求入口:web.xml中的DispatcherServlet <servlet> <servlet-name>springServlet</serv ...

随机推荐

  1. Python - 魔法字符串

    ''' #capitalize() ---首字母转换为大写--- s="sslssd" v=s.capitalize(); print(v) ''' ''' #center(20, ...

  2. restful api编写规范

    Node.js 除了用来编写 WEB 应用之外,还可以用来编写 API 服务,我们在本文中会介绍编写 Node.js Rest API 的最佳实践,包括如何命名路由.进行认证和测试等话题,内容摘要如下 ...

  3. Python 爬虫 多进程清洗代理

    利用多线程检测代理网站提供的免费代理是否可用 import requests from lxml import etree import time import multiprocessing def ...

  4. 在Linux Mint 19 / Linux Mint 18上安装VirtualBox 6.0 / 5.2

    如果你直接可以 sudo apt-get install virtualbox-6.0那就相安无事 否则参考https://www.itzgeek.com/how-tos/linux/linux-mi ...

  5. Tokio,Rust异步编程实践之路

    缘起 在许多编程语言里,我们都非常乐于去研究在这个语言中所使用的异步网络编程的框架,比如说Python的 Gevent.asyncio,Nginx 和 OpenResty,Go 等,今年年初我开始接触 ...

  6. 20155214 2016-2017-2 《Java程序设计》第2周学习总结

    20155214 2016-2017-2 <Java程序设计>第2周学习总结 教材学习内容总结 Java的基本类型比C多了boolean型和byte型,缺少了long double型,ch ...

  7. java课堂实践(5月17日)20155317 王新玮

    对P145 MathTool.java 代码托管 在IDEA中,使用JUnit进行单元测试,测试用例不少于三个,要包含正常情况,边界情况.提交测试代码和运行结果截图,加上学号水印,提交码云代码链接. ...

  8. Week6课下作业

    课本练习p2.96 p2.97 浮点数 float 单精度浮点数(32位) double 双精度浮点数(64位) 练习对应书上内容P78--P81页 知识点是IEEE浮点表示 符号(sign):s决定 ...

  9. 20155333 2016-2017-2 《Java程序设计》第4周学习总结

    20155333 2016-2017-2 <Java程序设计>第4周学习总结 教材学习内容总结 继承基本上就是避免多个类间重复定义的共同行为,在Java中,子类只能继承一个父类. priv ...

  10. Centos安装man功能

    CentOS接触很久了,但是一直作为服务器端使用.这次之所以安装man,是由于开始学习Nginx了. 言归正传,安装man,首先得下载包.由于我们天朝的原因,代码包几乎下不到的.首先你得FQ,再下载, ...