专栏首页JAVA高级架构Spring MVC工作原理

Spring MVC工作原理

Spring MVC框架介绍

  • Spring MVC属于SpringFrameWork的后续产品,已经融合在Spring Web Flow里面。

  Spring MVC框架提供了构建web应用程序的全功能MVC模块,使用了Spring可插入架构,可以选择是使用内置的Spring web框架还是struts这样的web框架,通过接口,Spring 框架是高度可配置的,而且包含多种视图技术,例如 JavaServer Pages(JSP)技术、Velocity、Tiles、iText 和 POI。Spring MVC 框架并不知道使用的视图,所以不会强迫您只使用 JSP 技术。

Spring MVC 分离了控制器、模型对象、分派器以及处理程序对象的角色,这种分离让它们更容易进行定制。

  • Spring的MVC框架主要由DispatcherServlet、处理器映射、处理器(控制器)、视图解析器、视图组成

Spring MVC原理图

SpringMVC接口解释

  • DispatcherServlet:

  Spring提供的前端控制器,所有的请求都有经过它来统一分发。在DispatcherServlet将请求分发给Spring Controller之前,需要借助于Spring提供的HandlerMapping定位到具体的Controller。

  • HandlerMapping:

  能够完成客户请求到Controller映射。

  • Controller:

  需要为并发用户处理上述请求,因此实现Controller接口时,必须保证线程安全并且可重用。

  Controller将处理用户请求,这和Struts Action扮演的角色是一致的。一旦Controller处理完用户请求,则返回ModelAndView对象给DispatcherServlet前端控制器,ModelAndView中包含了模型(Model)和视图(View)。

  从宏观角度考虑,DispatcherServlet是整个Web应用的控制器;从微观考虑,Controller是单个Http请求处理过程中的控制器,而ModelAndView是Http请求过程中返回的模型(Model)和视图(View)。

  • ViewResolver:

  Spring提供的视图解析器(ViewResolver)在Web应用中查找View对象,从而将相应结果渲染给客户。

SpringMVC运行原理

  1. 客户端请求提交到DispatcherServlet
  2. 由DispatcherServlet控制器查询一个或多个HandlerMapping,找到处理请求的Controller
  3. DispatcherServlet将请求提交到Controller
  4. Controller调用业务逻辑处理后,返回ModelAndView
  5. DispatcherServlet查询一个或多个ViewResoler视图解析器,找到ModelAndView指定的视图
  6. 视图负责将结果显示到客户端
  • DispatcherServlet是整个Spring MVC的核心。它负责接收HTTP请求组织协调Spring MVC的各个组成部分。其主要工作有以下三项:

1.截获符合特定格式的URL请求。

2.初始化DispatcherServlet上下文对应的WebApplicationContext,并将其与业务层、持久化层的WebApplicationContext建立关联。

3.初始化Spring MVC的各个组成组件,并装配到DispatcherServlet中。

本文分享自微信公众号 - JAVA高级架构(gaojijiagou)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2018-06-03

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 2017年美团Java程序员开发,看我如何拿到offer

    热乎的面经,昨天面的美团,虽然面完了HR面,但是感觉希望不大,希望能走运拿到offer吧。三面技术面面经如下: ? 一面: 中间省略掉大概几个问题,因为我不记得...

    Java高级架构
  • Java面试分享(题目+答案)

    Java高级架构
  • 一个高性能、轻量级的分布式内存队列系统--beanstalk

    Beanstalk是一个高性能、轻量级的、分布式的、内存型的消息队列系统。最初设计的目的是想通过后台异步执行耗时的任务来降低高容量Web应用系统的页面访问延迟。...

    Java高级架构
  • SpringMVC工作原理

    Spring MVC属于SpringFrameWork的后续产品,已经融合在Spring Web Flow里面。

    java架构师
  • 什么是 Spring MVC?

    Spring MVC 是一个用于构建 Web 应用程序的 Java 框架,遵循 模型 - 视图 - 控制器 设计模式。它实现了一个 Spring 核心框架的所有...

    村雨遥
  • ZetCode 教程翻译计划正式启动 | ApacheCN

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 ...

    ApacheCN_飞龙
  • 最搞笑的代码注释,你遇到过几个?

    小小詹同学
  • 最搞笑的代码注释,你遇到过几个?

    统计学家
  • 05-移动端开发教程-CSS3兼容处理

    CSS3的标准并没有全部定稿,目前CSS3的标准分成了不同的模块,具体的标准由各个模块推动标准和定稿,标准制定的过程中,浏览器也在不断的发新的版本来兼容新的标准...

    老马
  • 谷歌发布MobileNetV2:可做语义分割的下一代移动端计算机视觉架构

    项目链接:https://github.com/tensorflow/models/tree/master/research/slim/nets/mobilen...

    IT派

扫码关注云+社区

领取腾讯云代金券