摘要

Spring MVC 是一个开源的、基于MVC架构的WEB应用框架。这里记录MVC模型的概念以及Spring MVC 的请求处理流程。

关键词:Spring MVC

一、什么是Spring MVC

Spring MVC 是一个开源的、基于MVC架构的WEB应用框架。
Spring MVC 是基于MVC框架的,MVC为:

  • 模型(Model)封装了应用程序数据,通常它们由POJO类组成;
  • 视图(View)负责渲染模型数据,生成浏览器可以理解的HTML输出;
  • 控制器(Controller)负责处理用户请求,构建模型,并将其传递给视图进行渲染;

MVC关系图如下:

(图1:MVC模型)

二、Spring MVC 核心组件及处理流程

1、Spring MVC 处理流程

首先给出Spring MVC 的组件及其处理流程图:

(图2:Spring MVC 处理流程图)

处理流程大致分为三步:

  1. 分发:请求最开始进入Spring MVC时,DispatcherServlet会根据请求路径查找到对应的Handler对象;
  2. 处理:HandlerAdapter会对请求做处理,执行一系列的拦截器和Handler业务代码,最后返回ModelAndView对象;
  3. 渲染:根据Handler返回的对象,找到ViewResolver,ViewResolver结合Model和View对象渲染成页面返回;

2、Spring MVC 核心组件

对照前面的流程图,这里列出Spring MVC 几个核心组件:

组件 描述
DispatcherServlet 前置控制器,配置在web.xml文件中,拦截匹配的请求。从容器中取出所有的HandlerMapping进行遍历,找到对应的Handler。
HandlerMapping 根据请求去找对应的Handler,并将Handler及一系列HandlerInterceptor封装到HandlerExecutionChain中。
HandlerAdapter 根据Handler来找到支持它的HanderAdapter,通过HandlerAdapter来执行Handler可以得到ModelAndView对象。
HandlerIntercepter 视图接口的处理器拦截器,类似于Servlet中的Filter,用于对请求进行拦截和处理。
Controller 处理请求,执行业务。
ModelAndView 表示你想展示的页面信息。
ViewResolver 用于将一个逻辑上的视图名解析为一个真正的视图对象。
View View接口用于处理视图,返回给客户端。

参考资料

  1. 深入理解Spring MVC 思想
  2. SpringMVC框架理解
  3. MVC简介
  4. Spring MVC教程
  5. Spring MVC请求处理流程

Spring:MVC的更多相关文章

  1. Spring MVC静态资源处理:<mvc:resources />

    优雅REST风格的资源URL不希望带 .html 或 .do 等后缀.由于早期的Spring MVC不能很好地处理静态资源,所以在web.xml中配置DispatcherServlet的请求映射,往往 ...

  2. Unit03: Spring Web MVC简介 、 基于XML配置的MVC应用 、 基于注解配置的MVC应用

    Unit03: Spring Web MVC简介 . 基于XML配置的MVC应用 . 基于注解配置的MVC应用 springmvc (1)springmvc是什么? 是一个mvc框架,用来简化基于mv ...

  3. Spring:基于注解的Spring MVC

    什么是Spring MVC Spring MVC框架是一个MVC框架,通过实现Model-View-Controller模式来很好地将数据.业务与展现进行分离.从这样一个角度来说,Spring MVC ...

  4. 干货分享:ASP.NET CORE(C#)与Spring Boot MVC(JAVA)异曲同工的编程方式总结

    目录 C# VS JAVA 基础语法类比篇: 一.匿名类 二.类型初始化 三.委托(方法引用) 四.Lambda表达式 五.泛型 六.自动释放 七.重写(override) ASP.NET CORE ...

  5. Spring Framework------>version4.3.5.RELAESE----->Reference Documentation学习心得----->Spring Framework中的spring web MVC模块

    spring framework中的spring web MVC模块 1.概述 spring web mvc是spring框架中的一个模块 spring web mvc实现了web的MVC架构模式,可 ...

  6. 菜鸟学习Spring Web MVC之二

    有文章从结构上详细讲解了Spring Web MVC,我个菜鸟就不引据来讲了.说说强悍的XP环境如何配置运行环境~~ 最后我配好的环境Tomcat.Spring Tool Suites.Maven目前 ...

  7. 【Spring】Spring系列7之Spring整合MVC框架

    7.Spring整合MVC框架 7.1.web环境中使用Spring 7.2.整合MVC框架 目标:使用Spring管理MVC的Action.Controller 最佳实践参考:http://www. ...

  8. 4.Spring Web MVC处理请求的流程

  9. 1.Spring Web MVC有什么

    Spring Web MVC使用了MVC架构模式的思想,将web层进行职责解耦. 同样也是基于请求驱动的,也就是使用请求-响应模型.它主要包含如下组件: DispatcherServlet :前端控制 ...

随机推荐

  1. 7.6.1 continue 语句

    7.6.1 continue 语句 3种循环都可以使用CONTINUE语句.执行到该语句时,会跳过本次迭代的剩余部分,并开始下一轮迭代.如果continue语句在嵌套循环内,则只会影响包含该语句的内层 ...

  2. 【坑】linux目录软连接的相关操作--很容易误操作

    写一下文档,记录自己工作中的重大事故,警醒自己以后别犯错. 1)目录不能进行硬连接,只能进行软连接,也就是 ln命令必须加上 -s 参数,如下: [root@ALIYUN:~]#ln /srv/bak ...

  3. docker-容器,仓库

    ---恢复内容开始--- 前言: 学技术不能该断时间,连续的学习才是最好的学习方式. 00x1: 创建一个容器:docker create -it xxxx 而启动容器就有两种状态了,第一:新容器启动 ...

  4. windows驱动开发前导知识

    从以下整理得到 https://blog.csdn.net/suxinpingtao51/article/details/8610528 http://www.cnblogs.com/bugcheck ...

  5. robotframework在3.7下的搭建

    网上看了大多安装RIDE都是在python2的环境下,今天试了下python3的安装,成功了,步骤如下: 1.首先是python3的安装,以及pip这些工具,具体的网上一堆,不再啰嗦 2.安装robo ...

  6. Collection 和 Collections的区别。(转)

    Collection 和 Collections的区别. Collections是个java.util下的类,它包含有各种有关集合操作的静态方法. Collection是个java.util下的接口, ...

  7. for update 与where current of的问题

    在刚学oracle时一直不明白for update 的作用,今天考试又遇到郁闷半天,所以加以整理. 一: 1>首先for update是对表的行进行锁定.锁定就好比我们学java Thread那 ...

  8. WebApp的自动测试工具: protractor和selenium

    Protractor是Selenium的扩充,支持Angularjs element(by.css('my-css')).click(); 一.用by的各种Locator定位元素 选中1个元素: el ...

  9. cgi fast-cig php-fpm

    cgi 通用网关接口,接受到动态请求,web服务器会根据这次请求的内容,然后会fork一个新进程来运行, 这个进程会把处理完的数据返回给web服务器,最后web服务器把内容发送给用户,刚才fork的进 ...

  10. [python,2018-06-25] 高德纳箭号表示法

    概念 高德纳箭号表示法是种用来表示很大的整数的方法,由高德纳于1976年设计.它的意念来自幂是重复的乘法,乘法是重复的加法. 定义 计算 一个箭头 2↑3=2×2×2=8 2↑4=2×2×2×2=16 ...