Spring MVC运行流程
一、配置阶段
①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运行流程的更多相关文章
- spring mvc处理流程概述
大部分Java应用都是Web应用,展现层是Web应用不可忽略的重要环节.Spring为展现层提供了一个优秀的Web框架-Spring MVC.和众多其他Web框架一样,它基于MVC设计理念,此外,它采 ...
- Spring MVC 编程流程步骤
Spring MVC 编程流程步骤 1. 建立Maven工程 2. 添加Spring MVC依赖 <dependencies> <dependency> <groupId ...
- 一文读懂Spring MVC执行流程
说到Spring MVC执行流程,网上有很多这方面的文章介绍,但是都不太详细,作为一个初学者去读会有许多不理解的地方,今天这篇文章记录一下我学习Spring MVC的心得体会 话不多说,先上图: ...
- Java——一文读懂Spring MVC执行流程
说到Spring MVC执行流程,网上有很多这方面的文章介绍,但是都不太详细,作为一个初学者去读会有许多不理解的地方,今天这篇文章记录一下我学习Spring MVC的心得体会 话不多说,先上图: Sp ...
- Spring MVC 数据绑定流程分析
1. 数据绑定流程原理★ ① Spring MVC 主框架将 ServletRequest 对象及目标方法的入参实例传递给 WebDataBinderFactory 实例,以创建 Data ...
- Spring MVC 请求处理流程概览
SpringMVC工作流程 图一:请求流程概述 图二:请求在每个组件的处理 解释Spring工作流程 1.用户向服务器发送请求,请求被spring前端控制Servelt DispatcherServe ...
- Spring MVC请求处理流程
从web.xml中 servlet的配置开始, 根据servlet拦截的url-parttern,来进行请求转发 Spring MVC工作流程图 图一 图二 Spring工作流程描述 ...
- spring MVC的流程
spring MVC的工作流程
- Spring mvc请求处理流程详解(一)之视图解析
本文链接:https://blog.csdn.net/lchpersonal521/article/details/53112728 前言 Spring mvc框架相信很多人都很熟悉了,关于这方面 ...
随机推荐
- C++ 异常小记
catch必定使用拷贝构造函数 如下代码编译不通过,因为拷贝构造被标记delete #include <stdexcept> #include <cstdlib> #inclu ...
- Mego开发文档 - 索引
Mego 开发文档 Mego 快速概述 主要特性 获取Mego 使用流程 模型 查询 保存数据 入门 Mego 快速开始 创建项目 安装Nuget包 创建连接字符串 创建模型及数据上下文(添加引用) ...
- Linux入门:usermod - 修改用户帐户信息
一.什么是usermod? usermod 命令通过修改系统帐户文件来修改用户账户信息usermod [options] user_name选项(options)-a|--append ##把用户追加 ...
- Python入门之函数的介绍/定义/定义类型/函数调用/Return
本篇目录: 一. 函数的介绍 二. 函数的定义 三. 定义函数的三种类型 四. 函数调用的阶段 五. Return返回值 ======================================= ...
- python Django注册页面显示头像
python Django注册页面显示头像(views) def register(request): ''' 注册 :param request: :return: ''' if request.m ...
- 初学Java Web(7)——文件的上传和下载
文件上传 文件上传前的准备 在表单中必须有一个上传的控件 <input type="file" name="testImg"/> 因为 GET 方式 ...
- scrapy的命令行
scrapy --help 列出帮助信息以及常用命令scrapy version 列出scrapy版本scrapy version -v 列出详细的scrapy版本以及各组件信息 scrapy sta ...
- urlopen()&urlretrieve()
1.urlopen()方法 urllib.request.urlopen(url[,data[,proxies]]) 创建一个表示远程url的类文件对象,然后像本地文件一样的操作这个类文件对象来获取远 ...
- C++_进阶之函数模板_类模板
C++_进阶之函数模板_类模板 第一部分 前言 c++提供了函数模板(function template.)所谓函数模板,实际上是建立一个通用函数,其函数类型和形参类型不具体制定,用一个虚拟的类型来 ...
- oracle11g中SQL优化(SQL TUNING)新特性之SQL Plan Management(SPM)
1. 简介 Oracle Database11gR1引进了SQL PlanManagement(简称SPM),一套允许DBA捕获和保持任意SQL语句执行计划最优的新工具,这样,限制了刷新优化器统计 ...