摘要

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. python列表的基础操作

    Operation Result Trans x in s True if an item of s is equal to x, else False x值是否在s列表中 x not in s Fa ...

  2. (转)PHP线程安全与非线程安全的区别:如何选择用哪一个?

    PHP线程安全与非线程安全的区别:如何选择用哪一个? 很多时候,我们在做PHP环境配置的时候,很多人都是直接去乱下载PHP版本的,但是他不清楚:从2000年10月20日发布的第一个Windows版的P ...

  3. HTTP请求的502、504、499错误

    1.名词解释 502 Bad Gateway:作为网关或者代理工作的服务器尝试执行请求时,从上游服务器接收到无效的响应(伪响应). 504 Gateway Time-out:作为网关或者代理工作的服务 ...

  4. IDEA汉化

    1.- 汉化包 提取码: 4mbq 2.打开IDEA,执行下列操作:在主界面选择File → Settings → Appearance&Behavior → Appearance → 勾选O ...

  5. 小程序sitemap配置

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

  6. [UE4]Spline

    Spline和Spline Mesh的区别: 1.Spline Mesh是有实体表现的,Spline Mesh可以拉伸弯曲实体模型,Spline Mesh是具象. 2.Spline 只有曲线,没有实体 ...

  7. WPF 引用 ttf文件

    1.在 http://www.iconfont.cn/ 下载图标,将图标加入购物车中,统一下载 2.下载到本地,解压后文件夹如下图.打开 demo_unicode.html 可以查看下载的图标信息和引 ...

  8. 简单的PHP单例模式

    class MySQL { private static $instance; // 阻止外部实例化 private function __construct() { # code... } // 阻 ...

  9. 级联Cascade

    cascade分为两类: 1.JPA标准 2.Hibernate标准 JPA的方法使用JPA规范 如@OneToMany(cascade=CascadeType.ALL,mappedBy=" ...

  10. 特殊字符的过滤,防止xss攻击

    概念 XSS攻击全称跨站脚本攻击,是为不和层叠样式表(Cascading Style Sheets, CSS)的缩写混淆,故将跨站脚本攻击缩写为XSS,XSS是一种在web应用中的计算机安全漏洞,它允 ...