上一篇深入浅出Spring(四) Spring实例分析的博文中,咱们已经可以了解Spring框架的运行原理和实现过程,接下来咱们继续讲解Spring的一个延伸产品——Spring MVC

1、Spring MVC简介

在开始演示Spring之前,首先来介绍一下Sprig MVC。Spring MVC是一个基于Model2的MVC框架,它围绕DispatcherServlet这个核心类开展,DispatcherServlet是Spring MVC的负责截获客户端请求,组织不同的组件进行请求的处理,对处理的结果进行响应处理。整体实现框架图如下图所示:

2、Spring MVC分析

大致了解Spring MVC之后,我们做一个简单Spring MVC的实例分析,参考实例已在文章末尾给出链接地址。分析主要从如下几个方面进行:

A、启用框架

启用Spring MVC与Struts1相似,就是一个简单的Servlet。通过客户端发送Http请求,web应用服务器接受并判断是否匹配Spring MVC核心类DispatcherServlet的请求路径,如果匹配则转发给DispatcherServlet进行处理。具体的web.xml文件配置参考给出的参考实例。对应上图的如下部分:

这一部分是Servlet运行过程,与Spring MVC框架本身无关,仅仅是将请求转发到了Spring MVC的核心类,如果有疑惑请参考之前的文章初识Servlets对Servlet运行过程进行了解。

B、框架执行

Spring MVC框架的执行比较复杂,这里简单给大家介绍一下,主要分为如下两步:
       1)、DispatcherServelt 接受到Http请求之后,根据这个请求信息以及HandleMapping的配置找到处理请求的处理器Handler。
       2)、找到Handler之后,通过HandlerAdapter对Handler进行封装,再以统一的适配器接口调用Handler。

这里介绍的有点抽象,简单理解就是根据URL地址和这个URL与具体实现类的映射关系(HandleMapping)找到这个实现类(Handler)。具体实现调用的过程是通过使用适配器(HandlerAdapter)对具体实现类(Handler)进行封装,然后调用再统一调用。对应上图的如下部分:

映射的配置(HandleMapping)方式具体实现主要有两种方式一种是配置文件(具体参考实例代码),另一种是注解实现(具体参考实例代码)。

C、框架反馈

Spring MVC框架最终可以反馈给客户端的响应消息的类型非常丰富,可以是一个普通的HTML页面,一个XML或JSON串,也可以是一张图片或一个PDF文档等不同的媒体形式。这里简单介绍一下反馈消息的流程,具体如下;
       1)、Handler处理完成之后,会返回给DispatcherServlet一个ModelAndView
       2)、DispatcherServlet通过ViewResolver中的相关配置,将ModelAndView包含的视图逻辑名解析成真实的视图对象View
       3)、接下来,DispatcherServlet就使用这个View对象对ModelAndView中的模型数据进行视图渲染并发送到客户端。

这个过程具体对应为上图的如下部分:

以上部分理解起来比较简单与Struts框架基本雷同,这里我们就不做多余的介绍了。

到此关于Spring MVC框架的相关内容,我们就先介绍这么多,以后有时间,我再慢慢给大家介绍。建议大家对比之前的Struts学习,分析两者的不同点和相似之处,这样我们理解和使用就会变得更加灵活。

参考实例代码下载链接:

springMVC参考实例

深入浅出Spring(五) SpringMVC的更多相关文章

  1. Spring、SpringMVC、SpringData + JPA 整合详解

    原创播客,如需转载请注明出处.原文地址:http://www.cnblogs.com/crawl/p/7759874.html ------------------------------------ ...

  2. Spring+Mybatis+SpringMVC+Maven+MySql搭建实例

    林炳文Evankaka原创作品.转载请注明出处http://blog.csdn.net/evankaka 摘要:本文主要讲了如何使用Maven来搭建Spring+Mybatis+SpringMVC+M ...

  3. [MVC] 深入浅出Spring MVC

    [MVC] 深入浅出Spring MVC 转:http://4925054.blog.51cto.com/4915054/1176855 Spring MVC主要包括以下要点: 1:由Dispatch ...

  4. logback与Spring、SpringMVC结合使用教程(转) logback good

    摘要:本文主要介绍了如何在spring.springMVC中使用logback 一.logback与Spirng结合使用 1.maven添加引用: <dependency> <gro ...

  5. spring整合springmvc和hibernate

    上篇文章使用maven搭建了web环境,这篇来记录下如何使用spring整合springmvc和hibernate,亦即spring+springmvc+hibernate框架整合. 第一步:首先配置 ...

  6. ssm(Spring、Springmvc、Mybatis)实战之淘淘商城-第一天

    文章大纲 一.课程介绍二.淘淘商城基本介绍三.后台管理系统工程结构与搭建四.svn代码管理五.项目源码与资料下载六.参考文章   一.课程介绍 1. 课程大纲 一共14天课程(1)第一天:电商行业的背 ...

  7. SSM整合(1): spring 与 springmvc 整合

    久没有写博客了, 今年事情太多了, 也没了心思. 去深圳出差,  更重要的结婚的事情, 一茬接一茬. 好在最近闲暇一些, 就想记录一些曾经困扰过我的问题(现在用spring boot真是太方便了, 很 ...

  8. 深入浅出spring IOC中三种依赖注入方式

    深入浅出spring IOC中三种依赖注入方式 spring的核心思想是IOC和AOP,IOC-控制反转,是一个重要的面向对象编程的法则来消减计算机程序的耦合问题,控制反转一般分为两种类型,依赖注入和 ...

  9. 【转】Spring+Mybatis+SpringMVC+Maven+MySql搭建实例

    林炳文Evankaka原创作品.转载请注明出处http://blog.csdn.net/evankaka 摘要:本文主要讲了如何使用Maven来搭建Spring+Mybatis+SpringMVC+M ...

随机推荐

  1. Oracle笔记 六、PL/SQL简单语句块、变量定义

    1.简单SQL语句,HellWorld示例 --输出信息 begin dbms_output.put_line('Oracle Hello World!'); end; 2.变量的定义.使用 --定义 ...

  2. boost:exception使用实例

    /************************************************************************/ /*功能描述: boost exception使用 ...

  3. [my]_ubuntu12.10_/etc/apt/sources.list

    deb http://mirrors.163.com/ubuntu/ precise main universe restricted multiverse deb-src http://mirror ...

  4. git备忘(长久更新)

    一直想了解一下git,正好最近的有一个问题就是,实验室写的代码,怎么同步到自己宿舍的笔记本上面来.最开始想用dropbox,但是用VS的人都知道,工程文件里面会给你生成乱七八糟的很多东西,很占空间,d ...

  5. Mir2源码详解之服务端-登录网关(LoginGate)

    传奇这款游戏,一直对我的影响很大.当年为了玩传奇,逃课,被老师叫过N次家长.言归正传,网上有很多源码,当然了,都是delphi的.并且很多源码还不全, 由于一直学习的c.c++.delphi还真不懂. ...

  6. 查看静态库(.a文件)内容

    可执行代码的二进制格式,看不到. 1.打开Terminal(终端), cd 到 .a包所在的文件夹 2.输入命令:lipo -info libtrafficstatisticszyf.a  结果如下:

  7. webservice安全性之 SoapHeader自定义身份验证

    相信很多开发者都用过WebService来实现程序的面向服务,本文主要介绍WebService的身份识别实现方式,当然本文会提供一个不是很完善的例子,权当抱砖引玉了. 首先我们来介绍webservic ...

  8. Laravel 安装predis 扩展

    在安装predis扩展之前先安装composer,安装教程在https://getcomposer.org/download/: php -r "copy('https://getcompo ...

  9. php字符串截取问题

    希望将一个字符串限长显示,如果该字符串超过一定长数,就截取前n个字符,后加省略号. 但是在英文和汉字混合的情况下会出现如下问题: 如果有这样一个字符串  $str="这是一个字符串" ...

  10. LinearRegressionWithRegularization

    在线性回归的基础上加上正则项: # -*-coding:utf-8 -*- ''' Created on 2016年12月15日 @author: lpworkdstudy ''' import nu ...