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. 通过ArcGIS Desktop数据发布ArcGIS Server

    1.双击GIS Servers--->Add ArcGIS Server 2.选择Publish GIS Services 3.输入Server URL:http://localhost:608 ...

  2. linux解压和压缩

    1.压缩命令: 命令格式:tar  -zcvf   压缩文件名.tar.gz   被压缩文件名 可先切换到当前目录下.压缩文件名和被压缩文件名都可加入路径. 2.解压缩命令: 命令格式:tar  -z ...

  3. Duilib教程-HelloDuilib及DuiDesigner的简单使用

    一.HelloDuilib 1. 首先理解DUILIB显示的一个基本流程,如下图: 在Duilib中,WindowImplBase 这个类代表了图中 “CWndClass”. 所以我们需要做的是: 1 ...

  4. Android 5.0 API新增和改进

    开始开发 要构建 Android 5.0 版应用,您必须先下载 Android SDK,然后使用 SDK 管理器下载 Android 5.0 SDK 平台和系统映像. 更新您的目标 API 级别 要进 ...

  5. COM组件技术名称解释

    GUID:全局唯一标识. CLSID 或 ProgID :唯一地表示一个组件服务程序,那么根据这些ID,就可以加载运行组件,并为客户端程序提供服务了. IID :唯一的表示接口ID. COM 组件是运 ...

  6. c++11——右值引用

    1. 左值和右值 左值是表达式结束之后仍然存在的持久化对象,而右值是指表达式结束时就不再存在的临时对象.     c++11中,右值分为两种类型:将亡值(xvalue, expiring value) ...

  7. 如何使用腾讯云开发一款 AR 应用介绍

    版权声明:本文由张亚舒原创文章,转载请注明出处: 文章原文链接:https://www.qcloud.com/community/article/117 来源:腾云阁 https://www.qclo ...

  8. Rsync匿名访问漏洞

    前言 前两天总结了互联网或者说IT公司内网常见的漏洞,然后决定针对还没学习过不了解的漏洞进行学习了解,所以准备一一针对来研习,今天是第一篇,立一个Flag,争取今年搞定,为啥说的这么艰难,因为平时工作 ...

  9. 高中生的IT之路-1.2离开校园

    记得那是07年夏季的一天,高考成绩出来之后,班主任老师通知大家回学校报考志愿. 那天我刚到学校会议室,我还没来得及和同学见面就被班主任喊过去了,把志愿表递给我了我,我当时连仔细看那张志愿表都没看,随手 ...

  10. 【BZOJ3280】小R的烦恼 最小费用最大流

    [BZOJ3280]小R的烦恼 Description 小R最近遇上了大麻烦,他的程序设计挂科了.于是他只好找程设老师求情.善良的程设老师答应不挂他,但是要求小R帮助他一起解决一个难题. 问题是这样的 ...