Spring Web MVC 是一种基于 Java 的实现了 Web MVC 设计模式的请求驱动类型的轻量级 Web 框架,即使用了 MVC 架构模式的思想,将 web 层进行职责解耦,基于请求驱动指的就是使用请求-响应模型,框架的目的就是帮助我们简化开发,Spring Web MVC 也是要简化我们日常 Web 开发的。

另外还有一种基于组件的、事件驱动的 Web 框架在此就不介绍了,如 TapestryJSF 等。

Spring Web MVC 也是服务到工作者模式的实现,但进行可优化。前端控制器是 DispatcherServlet;应用控制器其实拆为处理器映射器(Handler Mapping)进行处理器管理和视图解析器(View Resolver)进行视图管理;页面控制器/动作/

处理器为 Controller 接口(仅包含 ModelAndView handleRequest(request, response) 方法)的实现(也可以是任何的 POJO 类);支持本地化(Locale)解析、主题(Theme)解析及文件上传等;提供了非常灵活的数据验证、格式化和数据绑定机制;提供了强大的约定大于配置(惯例优先原则)的契约式编程支持。

√让我们能非常简单的设计出干净的 Web 层和薄薄的 Web 层;√进行更简洁的 Web 层的开发;√天生与 Spring 框架集成(如 IoC 容器、AOP 等);

√提供强大的约定大于配置的契约式编程支持;√能简单的进行 Web 层的单元测试;√支持灵活的 URL 到页面控制器的映射;

√非常容易与其他视图技术集成,如 VelocityFreeMarker 等等,因为模型数据不放在特定的 API 里,而是放在一个 Model 里(Map 数据结构实现,因此很容易被其他框架使用);√非常灵活的数据验证、格式化和数据绑定机制,能使用任何对象进行数据绑定,不必实现特定框架的 API;√提供一套强大的 JSP 标签库,简化 JSP 开发;√支持灵活的本地化、主题等解析;√更加简单的异常处理;√对静态资源的支持;

Spring Web MVC 处理请求的流程

具体执行步骤如下:

1、 首先用户发送请求————>前端控制器,前端控制器根据请求信息(如 URL)来决定选择哪一个页面控制器进行

处理并把请求委托给它,即以前的控制器的控制逻辑部分;图 2-1 中的 12 步骤;2、 页面控制器接收到请求后,进行功能处理,首先需要收集和绑定请求参数到一个对象,这个对象在 Spring Web MVC

中叫命令对象,并进行验证,然后将命令对象委托给业务对象进行处理;处理完毕后返回一个 ModelAndView(模型数据和逻辑视图名);图 2-1 中的 345 步骤;

3、 前端控制器收回控制权,然后根据返回的逻辑视图名,选择相应的视图进行渲染,并把模型数据传入以便视图渲染;

2-1 中的步骤 674、 前端控制器再次收回控制权,将响应返回给用户,图 2-1 中的步骤 8;至此整个结束。

问题:

1、 请求如何给前端控制器?

2、 前端控制器如何根据请求信息选择页面控制器进行功能处理?

3、 如何支持多种页面控制器呢?

4、 如何页面控制器如何使用业务对象?

5、 页面控制器如何返回模型数据?

6、 前端控制器如何根据页面控制器返回的逻辑视图名选择具体的视图进行渲染?

7、 不同的视图技术如何使用相应的模型数据?

Spring Web MVC 核心架构图

Spring Web MVC 优势

1、清晰的角色划分:前端控制器(DispatcherServlet)、请求到处理器映射(HandlerMapping)、处理器适配器(HandlerAdapter)、视图解析器(ViewResolver)、处理器或页面控制器(Controller)、验证器( Validator)、命令对象(Command 请求参数绑定到的对象就叫命令对象)、表单对象(Form Object 提供给表单展示和提交到的对象就叫表单对象)。

2、分工明确,而且扩展点相当灵活,可以很容易扩展,虽然几乎不需要;

3、由于命令对象就是一个 POJO,无需继承框架特定 API,可以使用命令对象直接作为业务对象;

4、和 Spring 其他框架无缝集成,是其它 Web 框架所不具备的;

5、可适配,通过 HandlerAdapter 可以支持任意的类作为处理器;

6、可定制性,HandlerMappingViewResolver 等能够非常简单的定制;

7、功能强大的数据验证、格式化、绑定机制;8、利用 Spring 提供的 Mock 对象能够非常简单的进行 Web 层单元测试;

8、本地化、主题的解析的支持,使我们更容易进行国际化和主题的切换。

9、强大的 JSP 标签库,使 JSP 编写更容易。

 

转载于:https://www.cnblogs.com/doudouxiaoye/p/5793563.html

springmvc简述相关推荐

  1. springmvc简述及实例

    一.简述 springmvc是spring的一个模块,一个"小弟",用于web开发,可理解为servlet的升级版 所以了解springmvc必须先了解之前的开发模式 ------ ...

  2. Java高频面试题(2022) - Java、Mysql、JUC、JVM、SSM

    目录 不好使!点右边小目录定位: 目录 JavaSE HashMap底层原理?★★ Vector.ArryList.LinkedList 的区别与联系 Hashtable与HashMap的区别?如何解 ...

  3. 毕业半年无工作经验的程序员面试会遇到哪些问题

    本人小菜鸟一个,学的java后端,老家江西坐标上海,20届普本软件工程毕业生,种种原因导致21年1月底才开始找工作,基础学的一般,开个贴记录下面试遇到的问题,慢慢提升自己,大部分答案都是百度的 202 ...

  4. Spring-mvc设置@RequestMapping标签更改返回头及@RequestMapping简述

    1. 引子:设置返回头 2. 简述 3. value 4. method 5. consumes/produces 6. params 7. headers 1. 引子:设置返回头 返回JSON内容时 ...

  5. springmvc执行流程(简述易懂)

    Spring MVC框架的控制器 控制器的主要作用就是处理特定URL发过来的HTTP请求,然后进行业务逻辑处理,将结果返回给某个特定的视图. springmvc执行流程 1:客户端请求提交到Dispa ...

  6. 简述springmvc过程_spring mvc的工作流程是什么?

    展开全部 SpringMVC工作流程描述 向服务器发送HTTP请求,请求被前端控制器 DispatcherServlet 捕获. DispatcherServlet 根据 -servlet.xml 中 ...

  7. Spring+SpringMVC+MyBatis+easyUI整合基础篇(一)项目简述及技术选型介绍

    作者:13 GitHub:https://github.com/ZHENFENG13 版权声明:本文为原创文章,未经允许不得转载. 萌芽阶段 很久之前就开始打算整理一下自己的技术博客了,由于各种原因( ...

  8. 简述Spring、SpringMVC、SpringBoot关系?

    1.Spring Spring是一个轻量级的Java开发框架,核心是SpringIOC(控制反转)和SpringAOP(面向切面),针对开发的web层.业务层.持久层等都提供了多种配置解决方案. 主要 ...

  9. 简述SpringMVC及其工作流程图

    1.SpringMVC简介 SpringMVC是一种基于Spring实现了Web MVC设计模式的请求驱动类型的轻量级Web框架,使用了MVC架构模式的思想,将web层进行职责解耦,并管理应用所需对象 ...

最新文章

  1. opencv3 图像处理(一)图像缩放( python与c++ 实现)
  2. 用上AI、用好AI!AiRiA研究院“普惠AI,芯向边缘”战略发布会圆满举行
  3. sql语句列名为变量(Spring Boot+mybitis实验环境)
  4. 装饰器模式与java.io包
  5. MS-SQL CLR 直接读写文件,飞一般的感觉!
  6. Nuxt使用高德地图
  7. 基于Docker搭建RabbitMQ(多图)
  8. 5_Text Generation(文本生成)
  9. windows计算机考试题,全国计算机等级考试一级Windows试题及解答.pdf
  10. hello bokeyuan
  11. Apple Silicon配置二进制环境(一)
  12. Doc2Vec模型介绍及使用
  13. 计算机换色带技巧,平乐园电脑维修店教你爱普生针式打印机更换色带基本办法...
  14. 快速推导出等比数列的求和公式
  15. 自动刷票工具的实现机理简介
  16. 推荐阅读20100812
  17. Python笔记_第四篇_高阶编程_再议装饰器和再议内置函数
  18. 使用editor编辑器遇到的小问题:editor.md工具栏置顶
  19. org.apache.flink.util.FlinkRuntimeException: Exceeded checkpoint tolerable failure threshold
  20. css背景透明文子不透明,CSS 实现背景透明 内容文字不透明 显示

热门文章

  1. js_高级_面向对象编程案例---理解面向对象编程思想很重要
  2. ASP.NET 安全认证(一)
  3. ios 自定义加载动画效果
  4. 数据中心布线系统构成及不同规模范例
  5. Win7安装visual c++ 2015 redistributable x64失败
  6. 分享一点python 编码设置的知识
  7. 怎么用matlab画TM11,矩形波导TM11模matlab仿真
  8. centos7.3修改mysql密码_Centos7.3下mysql5.7.18安装并修改初始密码的方法
  9. 初识源代码管理工具——GitHab
  10. 集成算法中的Bagging