摘要

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. Kong(V1.0.2) Securing the Admin API

    Introduction Kong的Admin API为Services, Routes, Plugins, Consumers, and Credentials的管理和配置提供了一个RESTful接 ...

  2. 小程序sitemap配置

    这几天在官网文档中发现小程序也支持索引了链接,就是是在根目录下新建sitemap.json 文件. { "rules": [ { "action": " ...

  3. microsoft.jet.oledb.4.0 未注册

    64位系统已经不支持4.0 解决办法 1.下载 ACE2010的驱动,64位的. http://www.microsoft.com/downloads/zh-cn/details.aspx?famil ...

  4. Linux安装/升级pip

    Linux安装/升级pip 1.执行脚本 # wget https://bootstrap.pypa.io/get-pip.py # 如果没有 wget,先安装 wget # yum -y insta ...

  5. 通用mapper版+SpringBoot+MyBatis框架+mysql数据库的整合

    转:https://blog.csdn.net/qq_35153200/article/details/79538440 开发环境: 开发工具:Intellij IDEA 2017.2.3 JDK : ...

  6. Koa,React和socket.io

    安装  socket.io/socket.io-client 基本用法 首先koa和socket.io代码片段 const server = require('http'). const server ...

  7. vue设置路由跳转参数,以及接收参数

    最近做Vue项目,遇到了一个路由跳转问题:首页要跳转到项目页指定的Tab选项卡项,一开始总是跳到默认项.解决方法如下: 在跳转链接处设置了路由跳转参数,如下: <router-link  :to ...

  8. JAVA 8 函数式接口--Consumer

    从JDK8开始java支持函数式编程,JDK也提供了几个常用的函数式接口,这篇主要介绍Consumer接口.文本介绍的顺序依次为: 源码介绍 使用实例 jdk内对Consumer的典型使用 扩展类介绍 ...

  9. 个人简介HTML

    码云链接:https://gitee.com/lengxiaoyixuan222/codes/z4dxnvr0ce2blpkihsg7985 源代码: <!doctype html> &l ...

  10. [持续交付实践] Jenkins 中国用户大会参会见闻

    前言 上周日在上海召开了Jenkins中国用户大会(Jenkins User Confluence China),这应该是Jenkins在中国第一次举办吧.Jenkins的创始人Kohsuke Kaw ...