专栏首页晨曦破晓の家Spring MVC 工作流程简介

Spring MVC 工作流程简介

简介

Spring MVC属于SpringFrameWork的后续产品,已经融合在Spring Web Flow里面。Spring 框架提供了构建 Web 应用程序的全功能 MVC 模块。SpringMVC是一种web层的mvc框架,用于替代servlet(处理响应请求,获取表单参数,表单验证等)

工作流程

spring mvc 请求用例图

image

1、用户发送请求至前端控制器DispatcherServlet。

2、DispatcherServlet收到请求调用HandlerMapping处理器映射器。

3、处理器映射器找到具体的处理器(可以根据xml配置、注解进行查找),生成处理器对象及处理器拦截器(如果有则生成)一并返回给DispatcherServlet。

4、 DispatcherServlet调用HandlerAdapter处理器适配器。 5、HandlerAdapter经过适配调用具体的处理器(Controller,也叫后端控制器)。

5、HandlerAdapter经过适配调用具体的处理器(Controller,也叫后端控制器)。

6、Controller执行完成返回ModelAndView。

7、HandlerAdapter将controller执行结果ModelAndView返回给DispatcherServlet。

8、DispatcherServlet将ModelAndView传给ViewReslover视图解析器。

9、ViewReslover解析后返回具体View.

10、DispatcherServlet根据View进行渲染视图(即将模型数据填充至视图中)。

11、DispatcherServlet响应用户。

理解

1、为什么要使用springMVC?

SpringMVC是一种基于Java,实现了Web MVC设计模式,请求驱动类型的轻量级Web框架,即使用了MVC架构模式的思想,将Web层进行职责解耦。基于请求驱动指的就是使用请求-响应模型,框架的目的就是帮助我们简化开发,SpringMVC也是要简化日常Web开发。(处理业务数据的对象和显示业务数据的视图之间存在紧密耦合)

2、什么是MVC设计模式?

MVC即Model-View-Controller,将应用按照Model(模型)、View(视图)、Controller(控制)这样的方式分离。

视图(View):代表用户交互界面,对于Web应用来说,可以是HTML,也可能是jsp、XML和Applet等。一个应用可能有很多不同的视图,MVC设计模式对于视图的处理仅限于视图上数据的采集和处理,以及用户的请求,而不包括在视图上的业务流程的处理。业务流程的处理交予模型(Model)处理。

模型(Model):是业务的处理以及业务规则的制定。模型接受视图请求的数据,并返回最终的处理结果。业务模型的设计是MVC最主要的核心。MVC设计模式告诉我们,把应用的模型按一定的规则抽取出来,抽取的层次很重要,抽象与具体不能隔得太远,也不能太近。MVC并没有提供模型的设计方法,而只是组织管理这些模型,以便于模型的重构和提高重用性。

控制(Controller):可以理解为从用户接收请求, 将模型与视图匹配在一起,共同完成用户的请求。划分控制层的作用也很明显,它清楚地告诉你,它就是一个分发器,选择什么样的模型,选择什么样的视图,可以完成什么样的用户请求。控制层并不做任何的数据处理。

3、SpringMVC的特点

  • 清晰的角色划分:控制器(controller)、验证器(validator)、 命令对象(command object)、表单对象(formobject)、模型对象(model object)、 Servlet分发器(DispatcherServlet)、处理器映射(handler mapping)、视图解析器(view resolver)等。每一个角色都可以由一个专门的对象来实现。
  • 强大而直接的配置方式:将框架类和应用程序类都能作为JavaBean配置,支持跨多个context的引用,例如,在web控制器中对业务对象和验证器(validator)的引用。
  • 可适配、非侵入:可以根据不同的应用场景,选择合适的控制器子类 (simple型、command型、form型、wizard型、multi-action型或者自定义),而不是从单一控制器 (比如Action/ActionForm)继承。
  • 可重用的业务代码:可以使用现有的业务对象作为命令或表单对象,而不需要去扩展某个特定框架的基类。
  • 可定制的绑定(binding) 和验证(validation):比如将类型不匹配作为应用级的验证错误, 这可以保存错误的值。再比如本地化的日期和数字绑定等等。在其他某些框架中,你只能使用字符串表单对象,需要手动解析它并转换到业务对象。
  • 可定制的handlermapping和view resolution:Spring提供从最简单的URL映射, 到复杂的、专用的定制策略。与某些webMVC框架强制开发人员使用单一特定技术相比,Spring显得更加灵活。
  • 灵活的model转换:在Springweb框架中,使用基于Map的 键/值对来达到轻易地与各种视图技术的集成。
  • 可定制的本地化和主题(theme)解析:支持在JSP中可选择地使用Spring标签库、支持JSTL、支持Velocity(不需要额外的中间层)等等。
  • 简单而强大的JSP标签库(SpringTag Library):支持包括诸如数据绑定和主题(theme) 之类的许多功能。
  • JSP表单标签库:在Spring2.0中引入的表单标签库,使得在JSP中编写 表单更加容易。
  • Spring Bean的生命周期可以被限制在当前的HTTP Request或者HTTP Session。

4、SpringMVC的优点

  • 让我们能非常简单的设计出干净的Web层和薄薄的Web层
  • 进行更简洁的Web层的开发
  • 天生与Spring框架集成(如IoC容器、AOP等)
  • 提供强大的约定大于配置的契约式编程支持
  • 非常灵活的数据验证、格式化和数据绑定机制
  • 支持Restful风格

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

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 设计模式学习(一)

    设计模式是一套被反复使用、多数人知晓、经过分类编目、代码设计经验的总结。他描述了在软件设计过程中的一些不断重复发生的问题,以及该问题的解决方案。他是解决特定问题...

    用户4464623
  • Yapi 可视化接口平台安装实践

    使用我们提供的 yapi-cli 工具,部署 YApi 平台是非常容易的。执行 yapi server 启动可视化部署程序,输入相应的配置和点击开始部署,就能完...

    用户4464623
  • Windows使用scoop包管理器安装RabbitMQ

    在Windows上使用Scoop包管理器在命令行下安装RabbitMQ。这使得它很容易安装且易于升级或卸载。

    用户4464623
  • 我的世界中国版发布会于4月7日在水立方召开 将公布首测日期

    Youngxj
  • SWIG与nodejs入门

    Javascipt是一种基于原型的脚本语言。它是动态的,弱类型的语言。它可以说是最流行的Web开发语言。Javascript已经超越了基于浏览器的脚本语言,并且...

    音视频_李超
  • Keepalived双机热备

    L宝宝聊IT
  • 怎样做可靠的分布式锁,Redlock 真的可行么?

    本文是对 Martin Kleppmann 的文章 How to do distributed locking 部分内容的翻译和总结,上次写 Redlock 的...

    田守枝
  • PySyft与隐私深度学习的兴起

    信任是实现深度学习应用程序的关键因素。从培训到优化,深度学习模型的生命周期与各方之间的可信数据交换相关联。这种动态对于实验室环境当然是有效的,但是结果容易受到各...

    AiTechYun
  • Pytest+Allure接口自动化

    pytest是一个成熟的全功能的Python测试工具,可以帮助你写出更好的程序。适合从简单的单元到复杂的功能测试

    wencheng
  • 论买奶粉的正确姿势,文本数据挖掘有话要说

    面对市场上玲琅满目的奶粉,消费者时常不知如何选择。作为一个擅长用数据解决消费问题的网红,DT君一向推崇用户评论文本数据的挖掘。来自KPMG大数据挖掘团队的数据侠...

    DT数据侠

扫码关注云+社区

领取腾讯云代金券