在Spring MVC中,首先进行的是IoC容器的初始化,包括Root和DispatchServlet对应的content。在IoC容器准备好以后,就开始进行MVC的初始化,包括关于HandleMapping、ViewResolver等的初始化。
在Spring MVC中,MVC的初始化在DispatchServlet的initStrategies方法中进行的。
MVC框架需要的主要功能是根据http请求的信息选择合适的controller,调用controller后,根据返回的结果选择合适视图进行渲染。所以在这里主要关注一下这两个方法:initHandlerMappings和initViewResolvers。initHandlerMappings方法初始化了寻找controller的规则,initViewResolvers初始化视图解析的方法。
那么首先来看一下initHandlerMappings。在spring mvc中,关于寻找controller的规则是用HandleMapping表示的,首先看一下HandleMapping接口类图:
在HandlerMapping接口中,定义了getHandler方法,根据http请求,取得对应的处理对象。这个处理请求的对象用HandlerExecutionChain类表示,在这个类中,包含两个主要属性,一个是真正处理请求的handler,另外一个是Interceptor的集合。
介绍完HandlerMapping接口后,就来看一下Spring MVC中是如何初始化HandlerMapping信息的:
在上述方法中,做的主要工作是是从容器中获取所有HandlerMapping类型的bean,然后将这些bean按照一定的规则进行排序(order接口),最后为handlerMap赋值,这样关于HandlerMapping的信息就全纪录在handlerMap中了。当有http请求时,会遍历handlerMap集合,选择合适的HandlerMapping实现,调用getHandler方法取得HandlerExecutionChain对象,然后执行真正的业务处理。
在调用完controller后,Spring MVC会进行根据执行结果进行视图解析,这个任务是由ViewResolver进行的,关于ViewResolver的工作原理,见这篇文章:http://blog.csdn.net/prince2270/archive/2010/09/17/5891085.aspx。
那下面就来看一下Spring MVC是如何初始化ViewResolver信息的:
与HandlerMapping信息的初始化方法类似,取得IoC容器中所有的ViewResolver类型的bean,将其放入到viewResolvers中,并按照一定的规则进行排序。
经过MVC的初始化,所有的信息已经准备就绪,时刻准备着处理http请求了。
分享到:
相关推荐
可用于分析spring mvc源码、spring mvc父子容器初始化流程、session和cookie机制、spring session等,也可以用于学习Java Web(servlet、filter、listener等)、spring源码等。 该项目使用servlet3.0规范,无web.xml...
NULL 博文链接:https://bijian1013.iteye.com/blog/2296743
解压后,先初始化mysql,运行mysql。运行resin目录下的httpd.exe文件即可(请确保resin解压在D盘根目录下面,由于配置的时候是写死的引用D:\resin-pro-3.1.12\lib\aspectjweaver-1.7.0.jar)共有3个解压缩文件,由于...
包括:功能、配置、上下文关系、初始化顺序等 第三章:注解式控制器开发详解 包括:注解式开发HelloWorld、处理器定义、请求映射、REST风格支持、请求数据映射、数据绑定等诸多内容 第四章:数据类型转换 包括:...
系统的操作:用户超级管理员进入系统添加分公司,如添加湖北分公司,公司编号HB001(会生成分公司系统管理员HB001_admin,密码:admin),再用分公司系统管理员给分公司添加业务人员(初始化密码:000000),系统管理...
简单后台管理系统 基于maven管理,整合最新spring mvc 4.3.3.RELEASE版整合了mybatis 3.4.1,涵盖了目前互联网web系统最流行的组件,log4j2日志...数据库使用mysql,建表脚本及初始化脚本都在src\resources\sql文件夹里
解压后,先初始化mysql,运行mysql。运行resin目录下的httpd.exe文件即可(请确保resin解压在D盘根目录下面,由于配置的时候是写死的引用D:\resin-pro-3.1.12\lib\aspectjweaver-1.7.0.jar)共有3个解压缩文件,由于...
最近因为工作的原因在学习Spring MVC,为了更深入的学习Spring MVC,下面这篇文章主要给大家介绍了关于Spring MVC深入学习之启动初始化过程的相关资料,文中通过示例代码介绍的非常详细,对大家具有一定的参考学习...
这是一个测试spring MVC的的代码,用作初始化框架,可以参考
1.在mysql中创建数据库activiti,首先根据自己的数据库(mysql的版本5.5,其他的自行测试哈)执行对应的sql文件初始化数据库(webroot下有) 2.更改配置文件resources下的jdbc.properties,修改数据库连接信息 3.发布...
Spring Boot 是由 Pivotal 团队提供的全新框架,其设计目的是用来简化新 Spring 应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。简单的来说 Spring ...
Spring MVC 初始化程序示例 使用WebApplicationInitializer而不是web.xml基本 Spring MVC 4.0.x 应用程序。
13.5.1 初始化Model192 13.5.2 更新Model197 13.6 ServletInvocableHandlerMethod199 13.6.1 HandlerMethod199 13.6.2 InvocableHandlerMethod203 13.6.3 ServletInvocableHandler-Method205 13.7 ...
1.2.2 使用Spring Initializr初始化Spring Boot项目 10 1.3 小结 18 第2章 开发第一个应用程序 19 2.1 运用Spring Boot 19 2.1.1 查看初始化的Spring Boot新项目 21 2.1.2 Spring Boot项目构建过程...
2 使用 Spring Initializr 初始化 Spring Boot 项目 10 1 . 3 小结 18 第 2 章开发第一个应用程序 19 2 . 1 运用 Spring Boot 19 2 . 1 . 1 查看初始化的 Spring soot 新项目 21 21 . 2 Spring Boot 项目构建过程...
1、系统用户初始化 2、用户登录验证 3、关注好友 4、取消关注 微博模块 1、发布微博 2、微博点赞 3、评论微博 4、删除微博 时间线模块 1、微博首页 2、微博广场 3、用户微博首页 4、我的主页 分层结构如下 • 实体...
一个简单的ext4MVC界面 demo,左侧提供异步树形菜单(真的查询)..后台采用的 spring4MVC+hibernate4 压缩包里,提供了源代码和war包,源代码使用maven构建...代码里包含了树形sql菜单树.. ...并且运行init_sql,初始化树...
DispatcherServlet是前端控制器设计模式的实现,提供Spring Web MVC的集中访问点,而且负责职责的分派,而且与Spring IoC容器无缝集成,从而可以获得Spring的所有好处。 具体请参考第二章的图2-1。 ...
一个简单的项目初始化模板,集成shiro,spring,hibernate,spring mvc,ehcache,disconver,bootstrap。搭建项目时候不错的一个选择!
爬虫(Web Crawler)是一种自动化程序,用于从互联网上收集信息。其主要功能是访问网页、提取数据并存储,以便后续分析或展示。爬虫通常由搜索引擎、数据挖掘工具、监测系统等应用于网络数据抓取的场景。 爬虫的...