mvc容器的实例化:

http://blog.csdn.net/lin_shi_cheng/article/details/50686876

Spring的启动过程:

1:

对于一个web应用,其部署在web容器中,web容器提供其一个全局的上下文环境,这个上下文就是ServletContext,其为后面的spring IoC容器提供宿主环境;

2:

在web.xml中会提供有contextLoaderListener。在web容器启动时,会触发容器初始化事件,此时contextLoaderListener会监听到这个事件,其contextInitialized方法会被调用,在这个方法中,spring会初始化一个启动上下文,这个上下文被称为根上下文,即WebApplicationContext,这是一个接口类,确切的说,其实际的实现类是XmlWebApplicationContext。这个就是spring的IoC容器,其对应的Bean定义的配置由web.xml中的context-param标签指定。在这个IoC容器初始化完毕后,spring以WebApplicationContext.ROOTWEBAPPLICATIONCONTEXTATTRIBUTE为属性Key,将其存储到ServletContext中,也就是web容器。web容器也是map集合的方式管理spring的容器的。便于获取;

3:

contextLoaderListener监听器初始化完毕后,开始初始化web.xml中配置的Servlet,这个servlet可以配置多个,以最常见的DispatcherServlet为例

首先web.xml中定义了servlet,load-on-startup=1: 启动优先级。

HttpServletBean类有一个入口点就是重写了init方法,init()都做了什么事呢?

1)PropertyValues类:获取Web.xml里面的servlet的init-param(web.xml)

2)ResourceLoader接口:根据资源地址读取.xml配置信息加载资源,指定bean配置文件的来源。

3)BeanWrapper接口:对xml配置标签进行解析将系统默认的bean种属性设置到对应的bean属性。

4)调用initServletBean():为子类提供模版让子类根据自己需求实现不同ServletBean的初始化工作

总结:

SpringMVC用三个不同类层次以抽象和继承来实现不用的功能,分工合作,实现了解耦的设计原则。

HttpServletBean

实现了获取web.xml中的<init-param>配置元素的值;

FrameworkServlet

实现SpringMVC上下文并根据不同的DispatcherServlet放在以servlet-name为key值severtContext中;

DispatcherServlet

初始化处理器映射、视图解析等,实现初始化SpringMVC组件元素。

自动扫描cn.smbms.controller包下的javaBean,使添加了标注的处理器Bean组件生效,此时的javaBean不再需要继承AbstractController,了

<context:component-scan base-package="com.del.service,com.del.controller"/>

作用:自动批量注册处理器映射,小写驼峰命名,注册完成之后,再通过DefaultAnnotationHandlerMapping和AnnotationMethodHandlerAdapter这两个Bean的实例完成对注解的支持.用@Controller表示处理器,用@RequestMapping()表示请求映射.

--------------------重点-----------------------------

DefaultAnnotationHandlerMapping:作用:

用来解析Spring MVC里面的annotation对应的Controller,也就是通过这个类,给annotation设置映射关系,如@RequestMapping等

AnnotationMethodHandlerAdapter:作用:

对Annotation设置的方法进行处理,再返回给!

还会自动注册FormarttingConversionServiceFactoryBean(此实例为spring类型转换核心接口ConversionService的默认注册实例)来通过格式化注解,解决日期的格式转换问题

<mvc:annotation-driven/>

===================补充=============================

配置处理器映射所用的接口HandlerMapping:

1:第一个是实现类Spring默认的处理器映射,意思是查找与请求URL同名的处理器Bean,这个映射器是不需要配置就可以生效的:

2:第二个实现类是通过注解的方式来进行URL和处理器Bean组件的映射

SpringMVC是如何配置处理器映射的呢?

1:默认用BeanNameUrlHandlerMapping配置处理器映射,表示:(如果请求的路劲是"/index.html",则分配到后面class所指定的处理器去处理)

<bean name="/index.html" class="cn.smbms.controller.IndexController"/>

2:A:创建一个控制器:同过继承AbstractController,重写handlerRequestInternal方法,将IndexController这样的javaBean变成一个能处理前端请求的控制器

B: 配置视图层的Bean组件

当我们需要controller返回一个map的json对象时,可以设定<mvc:annotation-driven />,

同时设定<mvc:message-converters> 标签,设定字符集和json处理类,如下代码:

springMVC-web.xml的启动:

1:加载Spring配置文件

<context-param>

<param-name>contextConfigLocation</param-name>

<param-value>classpath:applicationContext-mybatis.xml</param-value>

</context-param>

2:容器启动监听器,去初始化容器

web容器的入口是被WEB容器所控制的,所以无法在main方法中同过调用创建classpath.xml application context对象来启动spring 容器。所以spring容器提供了一个监听类叫做contextLoaderListen,这个监听实现了servletListener接口,可以在外部容器启动的时候去初始容器,当然,前提是我们必须在web.xml文件中先配置此监听,配置如下:

<listener>

<listener-class>

org.springframework.web.context.ContextLoaderListener

</listener-class>

</listener>

SpringMVC—概述的更多相关文章

  1. SpringMVC系列(一)SpringMVC概述和搭建SpringMVC的第一个helloWord入门程序

    一.SpringMVC 概述 • Spring为展现层提供的基于MVC设计理念的优秀的Web框架,是目前最主流的MVC框架之一 • Spring3.0 后全面超越 Struts2,成为最优秀的 MVC ...

  2. SpringMVC听课笔记(一:SpringMVC概述)

    地址 :https://www.bilibili.com/video/av14907450 版本:4.x 概述: 概要: 一:SpringMVC概述 二:SpringMVC的 HelloWorld 三 ...

  3. SpringMVC 概述

    1. SpringMVC 概述 1) Spring 为展现层提供的基于 MVC 设计理念的优秀的 Web 框架,是目前最主流的MVC 框架之一 .MVC,M:model,模型层,指的是项目中的实体Ja ...

  4. SpringMVC——概述

    Spring 为展现层提供的基于 MVC 设计理念的优秀的Web 框架,是目前最主流的 MVC 框架之一 Spring3.0 后全面超越 Struts2,成为最优秀的 MVC 框架 Spring MV ...

  5. SpringMVC(一) SpringMVC概述

    SpringMVC为展现层提供的基于MVC设计理念的优秀的WEB框架,是目前主流的MVC框架之一.Spring 3.0之后,超越Struts2成为最优秀的MVC框架. SpringMVC通过一套MVC ...

  6. SpringMVC概述

    1. SpringMVC是什么 SpringMVC 是 Spring 框架内置的 MVC 的实现.SpringMVC 就是一个 Spring 内置的 MVC 子框架 Spring 子框架:意味着 Sp ...

  7. springmvc概述及框架原理

    一. 前言 MVC不是框架而是一种设计模式. MVC的全名Model View Controller,即模型-视图-控制器的缩写,这是一种设计模式,而非架构.MVC它强制的使用应用程序的输入.处理.和 ...

  8. 1.SpringMVC 概述

    SpringMVC 简介 SpringMVC 也叫 Spring web mvc ,属于表现层的框架.SpringMVC 是 Spring框架的一部分,是在Spring3.0后发布的 第一个Sprin ...

  9. 阶段3 3.SpringMVC·_01.SpringMVC概述及入门案例_05.入门程序之入门代码编写

    先把默认的index.jsp删掉.默认的index.jsp没有jsp的声明 ok webapp文件夹下new一个 起名叫做index.新建的页面有jsp的头 创建控制器类 java下新建一个class ...

随机推荐

  1. python2.0 s12 day2

    s12 day2 视频每节的内容 05 python s12 day2 python编码   1.第一句python代码 python 执行代码的过程 文件读到内存 分析内容 编译字节码  转换机器码 ...

  2. linux大全链接

    http://man.linuxde.net/

  3. 关于新塘 M0 M4添加库文件的说明

  4. 通过WireShark抓取iOS联网数据实例分析

    本文转载至http://blog.csdn.net/lixing333/article/details/7782539 iosiphone网络filter工具 我在另外一篇博客里,介绍了一款比Wire ...

  5. ios 图片处理( 1.按比例缩放 2.指定宽度按比例缩放

    本文转载至 http://blog.sina.com.cn/s/blog_6f29e81f0101tat6.html //按比例缩放,size 是你要把图显示到 多大区域 CGSizeMake(300 ...

  6. php第二例

    参考: http://www.php.cn/code/3645.html 前言 由于navicat在linux平台不能很好的支持, PHP的学习转到windows平台. php IDE: PhpSto ...

  7. HTTP/2笔记之帧

    零.前言 客户端和服务器端一旦握手协商成功接建立连接,端点之间可以基于HTTP/2协议传递交换帧数据了. 一.帧通用格式 下图为HTTP/2帧通用格式:帧头+负载的比特位通用结构: +-------- ...

  8. synchronized将任意对象作为对象监视器

    多个线程调用同一个对象中的不同名称的synchronized同步方法或synchronized(this)同步代码块时,调用的效果就是按顺序执行,也就是同步的,阻塞的.这说明synchronized同 ...

  9. CSSOM视图模式(CSSOM View Module)

    一.Window视图属性(window对象) 这些属性可以获取住整个浏览器窗体大小.微软则将这些API称为“Screenview 接口” innerWidth 属性和 innerHeight 属性pa ...

  10. ehcache加载配置文件ehcache.xml的源码

    package net.sf.ehcache.config; public final class ConfigurationFactory { public static Configuration ...