学习SpringMVC的工作原理,首先有三个要解决的问题:

(1)DispathcherServlet框架如何截获特定的HTTP请求,交由SpringMVC处理?

(2)位于Web层的Spring容器(WebApplicationContext),如何与位于业务层的Spring容器(ApplicationContext)建立联系,以使Web层的Bean可以调用业务层的Bean?

(3)如何初始化SpringMVC的各个组件,并将它们装配到DispatcherServlet中?

  概念,逻辑,问题。搞懂一个内容,首先重点注意涉及到的所有概念,之后学习这些概念的逻辑关系,是怎么来实现这个内容点的。其中可能会遇到一些问题,在解决问题的同时掌握了这个内容点。

  第一个问题:配置DispatcherServlet,截获特定的URL请求。DispatherServlet是框架的核心控制器,在web.xml文件中进行配置一个Servlet ,并通过<servlet-mapping>指定其处理的URL。所有此配置类型的请求将由DispatcherServlet处理(默认自动加载/WEB-INF/servletname-servlet.xml的Spring配置文件),启动Web层的Spring容器。其中web.xm文件中还配置通过contextConfigLocation参数指定业务层Spring容器的配置文件。之后配置一个Listener来通过contextConfigLocation参数所指定的Spring配置文件启动业务层的Spring容器。

  多个Spring容器之间可以设置为父子间的关系,实现程序的解耦。在这,web层的容器将作为业务层的容器。即web层容器可以引用业务层的容器,而业务层的容器不可以访问web层的容器。当然一个web.xml文件可以配置多个DispatcherServlet来处理多个不同的请求。

  ModelAndView对象既包括视图信息又包括了视图的渲染所需的模型数据信息,先理解为它代表着一个视图。接下来的问题是SpringMVC是如何根据这个对象转向真正的页面?

  同样使用了xml文件配置的方式(这个配置很重要)

<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"

  p:viewClass="org.springframeword.web.servlet.view.JstLView"

  p:prefix=""

  p:suffix="*.jsp"/>

  当然,SpringMVC为试图名到具体视图的映射提供了许多可供选择的方法,这里只是其中的一种(通过为视图逻辑名添加前后缀的方式)。

以下为其工作原理图:

SpringMVC框架的工作原理的更多相关文章

  1. 《HiWind企业快速开发框架实战》(1)框架的工作原理

    <HiWind企业快速开发框架实战>(1)框架的工作原理 1.HiWind架构 HiWind的基本架构如下: 持久层部分:同时为框架本身的业务服务,也为开发人员的自定义业务服务. 逻辑层: ...

  2. php面试专题---21、MVC框架基本工作原理考察点

    php面试专题---21.MVC框架基本工作原理考察点 一.总结 一句话总结: 会的东西快速过,不要浪费时间,生命有限,都是一些很简单的东西. 1.mvc框架单一入口的 优势 是什么? 可以进行统一的 ...

  3. ssh框架的工作原理

    struts2的工作原理 1 客户端初始化一个指向Servlet容器(例如Tomcat)的请求 2 这个请求经过一系列的过滤器(Filter)(这些过滤器中有一个叫做ActionContextClea ...

  4. SSH三大框架的工作原理及流程

    Hibernate工作原理及为什么要用? 原理:1.通过Configuration().configure();读取并解析hibernate.cfg.xml配置文件2.由hibernate.cfg.x ...

  5. [Java] SSH框架笔记_SSH三大框架的工作原理及流程

    Hibernate工作原理及为什么要用? 原理:1.通过Configuration().configure();读取并解析hibernate.cfg.xml配置文件2.由hibernate.cfg.x ...

  6. SSH三大框架的工作原理以及流程

    Hibernate工作原理以及为什么要用 原理:1.通过Configuration().configure();读取并解析hibernate.cfg.xml配置文件2.由hibernate.cfg.x ...

  7. PHP面试系列 之框架(一)---- MVC框架基本工作原理

    题:谈谈你对MVC的认识,介绍集中目前比较流行的MVC框架 考点: (1)MVC工作原理 (2)常见MVC框架 延伸: (1)单一入口的工作原理 (2)模板引擎的理解 (1)MVC工作原理 Model ...

  8. Python爬虫-Scrapy框架的工作原理

    Scrapy框架工作原理 Scrapy框架架构图 Scrapy框架主要由六大组件组成,分别为: ​ 调度器(Scheduler),下载器(Downler),爬虫(Spiders),中间件(Middwa ...

  9. SSH三大框架的工作原理

    Hibernate工作原理 原理:1.通过Configuration().configure();读取并解析hibernate.cfg.xml配置文件2.由hibernate.cfg.xml中的< ...

随机推荐

  1. matlab 获取鼠标位置

    转载:http://hi.baidu.com/alec1228/item/68ea36ebe4046f3a86d9deab 第一种途径:ginput()函数 ginput提供了一个十字光标使我们能更精 ...

  2. 【BZOJ-4213】贪吃蛇 有上下界的费用流

    4213: 贪吃蛇 Time Limit: 5 Sec  Memory Limit: 64 MBSubmit: 58  Solved: 24[Submit][Status][Discuss] Desc ...

  3. 【BZOJ-4269】再见Xor 高斯消元 + 线性基

    4269: 再见Xor Time Limit: 10 Sec  Memory Limit: 512 MBSubmit: 131  Solved: 81[Submit][Status][Discuss] ...

  4. Jenkins从2.x新建Job时多了一个文件夹的功能(注意事项)

    这个job如果在一个文件夹里面,那么想要的URL就会改变,默认会带上这个文件夹上去,所以在用[参数化构建插件]的时候要留意这个点.获取的URL将会不一样.

  5. 在DDwrt下对Firmware操作的一些技巧

    [备注]这里是对ddwrt的操作,事实上,对openwrt同样也适用. 基础知识: 1.MTD MTD是Memory Technology Devices的缩写,它主要提供了一个raw Flash设备 ...

  6. 遍历map集合

    for(var key in map){ if(data.hasOwnProperty(key)){ var value = map[key]; } }​

  7. 数据结构算法C语言实现(四)---2.3循环链表与双向链表

    一.简述 [工作中...]

  8. Swift 用Delegate和Block实现回调的Demo

    一.有关回调 我们知道,执行函数的时候,一般都有return作为返回参数了,那有return了为什么还要回调呢? 回调是为了实现异步的返回,在某些特殊的情况下,比如你执行的函数是一个长时间运行的函数, ...

  9. Oracle 子查询

    1.子查询在SELECT.UPDATE.DELETE语句内部可以出现SELECT语句.内部的SELECT语句结果可以作为外部语句中条件子句的一部分,也可以作为外部查询的临时表.子查询的类型有: ① 单 ...

  10. LAMP-五分钟搭建个人论坛

    LAMP-五分钟搭建个人论坛 系统版本:CentOS7 1.##安装lamp及依赖软件wget http://repo.mysql.com/mysql-community-release-el7-5. ...