您的位置:首页 > 编程语言 > Java开发

初探springMVC

2016-04-01 16:31 357 查看
1、springMVC简介

1)springMVC架构

Spring MVC是结构最清晰的MVCModel 2实现。它的Action不叫Action,而是称做Controller;Controller接收request,response参数,然后返回ModelAndView(其中的Model不是Object类型,而是Map类型)。但在使用中,
Controller返回值一般都只是一个

ViewName;Model则需要通过其它的途径(如request.attribute,Context参数,或Controller本身的属性数据)传递上去。



       

2)springMVC流程

  



3)springMVC核心组件



(1)prepareRefresh()

该方法所做的事情相对比较简单:记录容器启动的时间,并设置容器处于活跃状态

(2)、obtainFreshBeanFactory()

该方法的作用:创建BeanFactory实例,并解析Spring的xml配置文件。beanFactory的实现类是:ConfigurableListableBeanFactory。

(3)、prepareBeanFactory

创建好 BeanFactory 后,接着调用prepareBeanFactory方法,添加一些Spring本身需要的一些工具类

(4)、postProcessBeanFactory

方法是spring的一个扩展点之一,是一个空方法,留给子类去扩展。子类可以重写该方法,对已经构建的BeanFactory 的配置根据需要进行修改

(5)、invokeBeanFactoryPostProcessors

该方法的主要功能就是从spring配置文件中,获取实现BeanFactoryPostProcessor 接口的bean,然后按不同的优先级顺序,依次执行BeanFactoryPostProcessor的 postProcessBeanFactory 方法。

(6)、registerBeanPostProcessors

该方法的主要功能是:实例化并注册所有实现BeanPostProcessor接口的bean

(7)、initMessageSource

这个方法主要功能就是为spring容器初始化MessageSource,功能相对简单,如果spring配置文件没有定义messageSource,则使用默认的。

(8)、initApplicationEventMulticaster

这个方法的主要功能是为spring容器初始化ApplicationEventMulticaster,功能也相对简单,如果spring配置文件没有定义applicationEventMulticaster,则使用默认的

(9)、onRefresh该方法,默认是一个空的实现,留给子类去重写。

(10)、registerListeners  该方法的主要功能是注册实现ApplicationListener接口的bean。方法的具体实现如下

(11)、finishBeanFactoryInitialization

这个方法的主要功能是创建Bean 的实例对象以及构建Bean 实例对象之间的关联关系,该方法所做的事情,是spring的一个核心关键所在。

(12)、finishRefresh

该方法的作用是,发送一个ContextRefreshedEvent事件,通知相关的观察者

以上12个方法是springMVC的核心组件

4)SspringMVC-DispatchServlet

(1)Springmvc请所有的请求都提交给DispatcherServlet,它会委托应用系统的其他模块负责负责对请求进行真正的处理工作。

(2)DispatcherServlet查询一个或多个HandlerMapping,找到处理请求的Controller。

(3)DispatcherServlet请请求提交到目标Controller。

(4)Controller进行业务逻辑处理后,会返回一个ModelAndView。

(5)Dispathcher查询一个或多个ViewResolver视图解析器,找到ModelAndView对象指定的视图对象。

(6)视图对象负责渲染返回给客户端。

 
DispatcherServlet接受一个请求,然后解析完locales, themes等后,通过HadlerMapping解析控制器Controller去处理请求。

 找到Controller后,出发当前controller的handleRequest()方法,此controller负责真正处理请求,然后一个ModelAndView实例。

  DispatcherServlet 代理此Controller,接收返回结果,然后进行渲染。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: