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. LEFT JOIN个别问题

    SELECT a.loginuser, a.schoolid, count(b.id)FROM vhs_school AS aLEFT JOIN vhs_attence AS b ON a.schoo ...

  2. 大数据Hadoop的HA高可用架构集群部署

        1 概述 在Hadoop 2.0.0之前,一个Hadoop集群只有一个NameNode,那么NameNode就会存在单点故障的问题,幸运的是Hadoop 2.0.0之后解决了这个问题,即支持N ...

  3. Python学习:20.Python网络编程(Socket)

    一.Socket介绍 我们知道两个进程如果需要进行通讯,最基本的一个前提是能够唯一标示一个进程.在本地进程通讯中可以使用PID来唯一标示一个进程,但PID只在本地唯一,网络中的两个进程PID冲突几率很 ...

  4. 大二作业——操作系统实验——C语言用双向链表,模拟实现动态分区式存储管理

    实验:动态分区式存储管理 实验内容: 编写程序模拟完成动态分区存储管理方式的内存分配和回收.实验具体包括:首先确定内存空闲分配表:然后采用最佳适应算法完成内存空间的分配和回收:最后编写主函数对所做工作 ...

  5. pgsql 变量赋值方法

    1.网上一般说的方法如下: :=,赋值,比如user_id := 20; select into 赋值,比如 SELECT INTO myrec * FROM emp WHERE empname = ...

  6. Backbone.js Basics: Bringing an App to Life with Events

    http://www.sitepoint.com/backbone-basics-events/

  7. Linux入门第四天——shell基础

    一.shell概述 1.概述 命令行解释器(壳,也就是我们的操作界面),计算机只认识0101的二进制,我们需要通过ASCII表来进行翻译 较为官方的解释是: Shell 是一个用 C 语言编写的程序, ...

  8. HDFS要点

    namenode存储的数据: 主控服务器主要有三类数据:文件系统的目录结构数据,各个文件的分块信息,数据块的位置信息(就数据块放置在哪些数据服务器上...).在GFS和HDFS的架构中,只有文件的目录 ...

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

    20155213 2016-2017-2 <Java程序设计>第十周学习总结 教材学习内容总结 掌握Java Socket编程 理解混合密码系统 掌握Java 密码技术相关API的使用 网 ...

  10. 2016-2017-2 《Java程序设计》第1周学习问题汇总

    201552-53 <Java程序设计>第一周问题汇总 关于软件安装以及配置中出现的问题,附上教程及讨论组网址: JDK/intelljIDEA安装及配置: http://www.cnbl ...