一、配置阶段

①web.xml

②DispatcherServlet    //Spring MVC总入口

③配置初始化参数   //classpath:application.xml,用于配置无数个bean

④servlet 请求路径配置,如/web/url,  /*.json等

二、初始化阶段

① 调用 servlet 的init方法  //被web容器调用,如Tomcat,jetty

(以下是servlet 的init方法做的事情)

②找到配置文件所在路径,即加载application.xml中的内容,并解析

③扫描相关联的class(根据用户配置的包名去扫描)

④IOC容器的初始化

(IOC容器就是一个Map,类似(beanID,实例),即key是beanID,value是实例。默认情况下,以首字母小写的类名作为beanID。如果用户自定义了ID,那么优先使用用户定义的ID)

⑤依赖注入DI

(如果声明的类中,有需要注入的属性,即定义了成员变量,且需要赋值,那么spring会给此成员变量自动赋值)

⑥初始化一个HandlerMapping(HandlerMapping也是个Map,  其作用是将URL和@Controller中的某个方法进行一对一的关联,保存到一个Map中)

三、运行阶段

①service方法(分发 doGet/doPost方法,用户一旦在浏览器中输入一个URL,web容器就会自动调用该service方法)

②调用一个doDispatch方法(根据用户请求的URL去匹配已经初始化完毕的HandlerMapping中的Method)

③通过反射机制,动态调用上一步匹配到的Method,获取到返回值

④通过Response 输出

总结:

核心内容:

①加载配置文件

           ②扫描所有相关的类(一般是被托管的类,即有注解的类),将类名放到一个list (命名为classNames)中

③遍历list  classNames,将所有相关Class的实例初始化,并且将其保存到IOC容器之中

      ④遍历ioc,进行自动化依赖注入

      ⑤初始化HandlerMapping,将URL与方法一一映射,存到map中(命名为handlerMapping)

           ⑥用户请求的时候做分发,去handlerMapping中寻找相对应的方法进行执行

Spring MVC运行流程的更多相关文章

  1. spring mvc处理流程概述

    大部分Java应用都是Web应用,展现层是Web应用不可忽略的重要环节.Spring为展现层提供了一个优秀的Web框架-Spring MVC.和众多其他Web框架一样,它基于MVC设计理念,此外,它采 ...

  2. Spring MVC 编程流程步骤

    Spring MVC 编程流程步骤 1. 建立Maven工程 2. 添加Spring MVC依赖 <dependencies> <dependency> <groupId ...

  3. 一文读懂Spring MVC执行流程

    说到Spring MVC执行流程,网上有很多这方面的文章介绍,但是都不太详细,作为一个初学者去读会有许多不理解的地方,今天这篇文章记录一下我学习Spring MVC的心得体会 话不多说,先上图:   ...

  4. Java——一文读懂Spring MVC执行流程

    说到Spring MVC执行流程,网上有很多这方面的文章介绍,但是都不太详细,作为一个初学者去读会有许多不理解的地方,今天这篇文章记录一下我学习Spring MVC的心得体会 话不多说,先上图: Sp ...

  5. Spring MVC 数据绑定流程分析

    1.    数据绑定流程原理★ ①   Spring MVC 主框架将 ServletRequest  对象及目标方法的入参实例传递给 WebDataBinderFactory 实例,以创建 Data ...

  6. Spring MVC 请求处理流程概览

    SpringMVC工作流程 图一:请求流程概述 图二:请求在每个组件的处理 解释Spring工作流程 1.用户向服务器发送请求,请求被spring前端控制Servelt DispatcherServe ...

  7. Spring MVC请求处理流程

    从web.xml中 servlet的配置开始, 根据servlet拦截的url-parttern,来进行请求转发   Spring MVC工作流程图   图一   图二    Spring工作流程描述 ...

  8. spring MVC的流程

    spring MVC的工作流程

  9. Spring mvc请求处理流程详解(一)之视图解析

      本文链接:https://blog.csdn.net/lchpersonal521/article/details/53112728 前言 Spring mvc框架相信很多人都很熟悉了,关于这方面 ...

随机推荐

  1. php框架中的phalcon框架的安装,及初步认识,从表单提交简单的数据到数据库中

    php框架中的phalcon框架的安装,及初步认识,从表单提交简单的数据到数据库中 1.phalcon框架的安装: phalcon框架在windows本地安装可以利用wamp软件,安装之后可以查看对应 ...

  2. angular2 学习笔记 ( 4.0 初探 )

    目前是 4.0.0-rc.2. 刚好有个小项目要开发,就直接拿它来试水啦. 更新 cli 到最新版, 创建项目, 然后 follow https://github.com/angular/angula ...

  3. mysql(2)—— 由笛卡尔积现象分析数据库表的连接

    首先,先简单解释一下笛卡尔积. 现在,我们有两个集合A和B. A = {0,1}     B = {2,3,4} 集合 A×B 和 B×A的结果集就可以分别表示为以下这种形式: A×B = {(0,2 ...

  4. Python之面向对象一

    引子 小游戏:人狗大战 角色:人和狗 角色属性:姓名,血量,战斗力和性别(种类) 技能:打/咬 用函数实现人打狗和狗咬人的情形 def Dog(name,blood,aggr,kind): dog = ...

  5. 用js来实现那些数据结构(数组篇02)

    上一篇文章简单的介绍了一下js的类型,以及数组的增删方法.这一篇文章,我们一起来看看数组还有哪些用法,以及在实际工作中我们可以用这些方法来做些什么.由于其中有部分内容并不常用,所以我尽量缩小篇幅.在这 ...

  6. log4j将日志文件输出到相对路径

    建议直接使用jvm中定义的变量或者操作系统的环境变量. log4j.appender.logfile.File=${user.dir}/logs/app.log,使用tomcat容器时${user.d ...

  7. Windows10下的docker安装与入门 (一)使用docker toolbox安装docker

    Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化.容器是完全使用沙箱机制,相互之间不会有任何 ...

  8. 2018 6年iOS开发常用的三方库

    开发一般APP必备三方库,省力秘籍!!!本篇文章会经常更新最新常用的三方. 1.网络请求库 AFNetworking https://github.com/AFNetworking/AFNetwork ...

  9. Hive:insert into table 与 insert overwrite table 区别

    创建测试表,来测试看看测试结果: create table test(name string,pwd string,createdate string)row format delimited fie ...

  10. Ubuntu16.04开机引导缺失Win10

    Ubuntu正常开机的情况下: sudo update-grub # 如果grub丢失, 就先sudo apt install grub Ubuntu不能正常开下: 进入Ubuntu引导, 不要正常进 ...