什么是 Spring MVC

  学习某一样东西之前,我们一定要大致知道这个东西是什么,能干什么,为什么要用它。

  Spring MVC 是一个开源平台,一个基于 Spring 的 MVC 框架,它支持基于 Java 开发 Web 应用程序。MVC 架构很利于开发灵活、低耦合的 Web 应用程序组件。

  M(Model)模型,应用程序的数据载体。通常是一些 POJO。

  V(View)视图,用于渲染一些模型的数据,一般是用来生成用户浏览器的可以解释的HTML。

  C(Controller)控制器,用于处理用户的请求并构建相应的模型,然后交给视图渲染。

  Spring MVC的优点:

    (1)使用简单;

    (2)能够很容易的开发出性能很好的程序;

    (3)灵活,易于扩展;

    (4)具有 Spring 的一些特性;

    (5)支持 REST 风格;

  Spring MVC的缺点:

    (1)很难脱离容器进行独立运行;

    (2)需要编写一些对应的 web.xml配置;

Spring MVC 请求流程

  

                     (Spring MVC 请求处理流程)

  上图流程涉及到的几个组件的功能说明:

    DispatcherServlet(前端控制器):接收用户请求并返回请求结果。它控制着整个执行流程,对各个组件进行调度,降低组件之间的耦合,就像是一个团队的组织人。

    HandlerMapping(处理器映射器):根据用户的请求 URL,根据 XML 配置或注解找到对应的处理器 Handler。

    HandlerAdapter(处理器适配器):根据映射器找到的 Handler 完成调用处理器中的方法。

    Handler(处理器):处理请求的主要逻辑,返回模型数据和视图。

    ViewResolver(视图解析器):解析具体的视图。通过 ModelAndView 中的 View 将逻辑视图名解析为真正的 视图。

  请求具体步骤如下:

    1:客户端起请求,请求会被前端控制器(DispatcherServlet)拦截

    2:前端控制器(DispatcherServlet)请求处理器映射器(HandlerMapping)查找Handler

    3:处理器映射器(HandlerMapping)根据配置找到相应Handler,可能包含多个Interceptor拦截器,返回给前端控制器

    4:前端控制器(DispatcherServlet)请求处理器适配器(HandlerAdapter)去执行相应的Handler

    5:适配器交由对应Handler处理器执行

    6:  Handler处理器执行完成后返回ModelAndView对象给处理器适配器

    7:处理器适配器接受Handler处理器的返回结果,并将该结果返回给前端控制器(DispatcherServlet)

    8:前端控制器(DispatcherServlet)接收处理器适配器返回的数据和视图信息,请求视图解析器,解析对应的视图

    9:视图解析器根据View信息匹配相应的视图结果,反回给前端控制器

     10:前端控制器接收具体视图,进行视图渲染,将Model数据填充到View视图中,生成最终视图

     11:前端控制器向客户端返回请求结果

Spring MVC 入门(一)的更多相关文章

  1. Spring MVC 入门教程示例 (一)

    今天和大家分享下  Spring MVC  入门教程 首先还是从 HelloWorld  web 工程开始 -------------------------- 1.首先创建一个Maven Web工程 ...

  2. Java基础-SSM之Spring MVC入门篇

    Java基础-SSM之Spring MVC入门篇 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.Spring MVC简介 1>.什么是Spring MVC 答:Sprin ...

  3. Spring框架学习(7)spring mvc入门

    内容源自:spring mvc入门 一.spring mvc和spring的关系 spring mvc是spring框架提供的七层体系架构中的一个层,是spring框架的一部分,是spring用于处理 ...

  4. 【转】spring MVC入门示例(hello world demo)

    部分内容来自网络:<第二章 Spring MVC入门 —— 跟开涛学SpringMVC > 1. Spring MVC介绍 Spring Web MVC是一种基于Java的实现了Web M ...

  5. SSM(spring mvc+spring+mybatis)学习路径——2-1、spring MVC入门

    目录 2-1 Spring MVC起步 一.回顾Servlet 二.SpringMVC简介 三.搭建SpringMVC第一个案例 四.简单流程及配置 五.使用注解开发Controller 六.参数绑定 ...

  6. Spring MVC入门的实例

      作为Spring MVC入门,以XML配置的方式为例.首先需要配置Web工程的web.xml文件. 代码清单14-1:web.xml配置Spring MVC <?xml version=&q ...

  7. Spring MVC入门

    1.什么是SpringMvc Spring MVC属于SpringFrameWork的后续产品,已经融合在Spring Web Flow里面.Spring 框架提供了构建 Web 应用程序的全功能 M ...

  8. 【Spring】简单的Spring MVC入门例子

    前言 测试特性需要搭建一个简单的Spring MVC的例子,遂记录之,只是例子,只为入门者之示例. 版本说明 声明POM文件,指定需引入的JAR. <properties> <spr ...

  9. 1.【转】spring MVC入门示例(hello world demo)

    1. Spring MVC介绍 Spring Web MVC是一种基于Java的实现了Web MVC设计模式的请求驱动类型的轻量级Web框架,即使用了MVC架构模式的思想,将web层进行职责解耦,基于 ...

  10. Spring MVC 入门示例讲解

    在本例中,我们将使用Spring MVC框架构建一个入门级web应用程序.Spring MVC 是Spring框架最重要的的模块之一.它以强大的Spring IoC容器为基础,并充分利用容器的特性来简 ...

随机推荐

  1. bzoj1089 [SCOI2003]严格n元树(dp+高精)

    1089: [SCOI2003]严格n元树 Time Limit: 1 Sec  Memory Limit: 162 MBSubmit: 1899  Solved: 954[Submit][Statu ...

  2. [Swift通天遁地]三、手势与图表-(2)监听手势事件自由拖动图像视图

    ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★➤微信公众号:山青咏芝(shanqingyongzhi)➤博客园地址:山青咏芝(https://www.cnblogs. ...

  3. [Swift通天遁地]八、媒体与动画-(9)快速实现复合、Label、延续、延时、重复、缓冲、弹性动画

    ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★➤微信公众号:山青咏芝(shanqingyongzhi)➤博客园地址:山青咏芝(https://www.cnblogs. ...

  4. JavaScript--关闭窗口(window.close)

    close()关闭窗口 用法: window.close(); //关闭本窗口 或 <窗口对象>.close(); //关闭指定的窗口 例如:关闭新建的窗口. <script typ ...

  5. JavaScript--什么是函数

    函数是完成某个特定功能的一组语句.如没有函数,完成任务可能需要五行.十行.甚至更多的代码.这时我们就可以把完成特定功能的代码块放到一个函数里,直接调用这个函数,就省重复输入大量代码的麻烦. 如何定义一 ...

  6. .net Jquery动态显示当前时间

    <span id="Timer"></span> <script type="text/javascript"> $(fun ...

  7. Algebrizer

    Microsoft SQL Server 2012 Internals 把 SQL 语句的处理分为四个阶段,分别是 解析.绑定.优化.执行,如图所示:     解析(Parse)主要是语法分析,比较简 ...

  8. 商业计算中Java高精度计算BigDecimal类

    <Effective Java> 第48条:如果需要精确的答案,请避免使用float和double. 如果我们编译运行下面这个程序会看到什么?public class Test{    p ...

  9. [转]STL之vector容器详解

    vector 容器 vector是C++标准模版库(STL,Standard Template Library)中的部分内容.之所以认为是一个容器,是因为它能够像容器一样存放各种类型的对象,简单的说: ...

  10. Android项目实战_手机安全卫士splash界面

    - 根据代码的类型组织包结构 1. 界面 com.hb.mobilesafe.activities 2. 服务 com.hb.mobilesafe.services 3. 业务逻辑 com.hb.mo ...