• [全家桶之SpringMVC]SpringMVC 的特点和优势


    你总得知道它好在哪,才能够用的心安理得!了解 SpringMVC 的设计目的、核心思想、主要特性和与传统 Servlet 和其他 MVC 框架的区别和优势。

    概念

            SpringMVC 是 Spring 提供的一个实现了 Web MVC 设计模式的轻量级 Web 框架。它与 Struts2 框架一样,都属于 MVC 框架,但其使用和性能等方面比 Struts2 更加优异。很遗憾没有见证过Struts2辉煌的时代,现在除了很老的项目在维护,基本上已经不使用了。

    作用

            SpringMVC 的设计目的是为了使 Spring 有可插入的 MVC 架构,从而在使用 Spring 进行 Web 开发时可以选择使用 Spring 的 SpringMVC 框架作为 Web 开发的控制器框架。所以,SpringMVC并不是spring的plus版,相反它只是spring框架的web部分,包含在spring内哦~

    核心思想

            SpringMVC 的核心思想是基于请求驱动的模型-视图-控制器(Model-View-Controller, MVC)架构,它提供了一个前端控制器 DispatcherServlet,作为统一的请求入口,负责分派请求到不同的处理器(Handler),并通过视图解析器(ViewResolver)来渲染视图(View)。

    主要特性

    SpringMVC 的主要特性有以下几点:

    • 清晰的角色划分:控制器(Controller)、验证器(Validator)、命令对象(Command Object)、表单对象(Form Object)、模型对象(Model Object)、Servlet 分发器(DispatcherServlet)、处理器映射(Handler Mapping)、视图解析器(View Resolver)等等。每一个角色都可以由一个专门的对象来实现。
    • 强大而直接的配置方式:将框架类和应用程序类都能作为 JavaBean 配置,支持跨多个 context 的引用,例如,在 web 控制器中对业务对象和验证器(Validator)的引用。
    • 可适配、非侵入:可以根据不同的应用场景,选择合适的控制器子类(simple型、command型、form型、wizard型、multi-action型或者自定义),而不是一个单一控制器(比如 Action/ActionForm)继承。
    • 可重用的业务代码:可以使用现有的业务对象作为命令或表单对象,无需继承框架特定 API。
    • 与 Spring 其他框架无缝集成,是其它 Web 框架所不具备的。
    • 可定制性,HandlerMapping、ViewResolver 等能够非常简单地定制。
    • 功能强大的数据验证、格式化、绑定机制。
    • 利用 Spring 提供的 Mock 对象能够非常简单地进行 Web 层单元测试。
    • 本地化、主题的解析的支持,使我们更容易进行国际化和主题的切换。

    看不懂别急,这章其实就是开篇(闲聊),为了引入之后的内容。

    优势

    与传统 Servlet 和其他 MVC 框架相比,SpringMVC 有以下几点区别和优势:

    • 相比于传统 Servlet,SpringMVC 提供了更高层次的抽象和封装,使开发人员无需关心底层细节,只需关注业务逻辑和视图展示。
    • 相比于 Struts2 框架,SpringMVC 运行效率更高,注解式开发更高效灵活,异常处理和 AOP 机制更完善。
    • 相比于 Play Framework 框架,SpringMVC 采用标准的 Java 开发,而 Play Framework 采用 Scala 语言开发而成。SpringMVC 提供更高的吞吐量和更好的性能。
    • 相比于 Ruby on Rails 框架,SpringMVC 提供更好的灵活性和可维护性,同时可以与其他的框架进行高效的集成,提高开发效率和用户体验。

    学完SpringMVC打下坚实基础,再学习Spring会轻松很多~


                                                                                                                                    我手写我口,我手写我心  ——  黄遵宪

  • 相关阅读:
    关于spring项目中,security 对websocket请求和拦截问题
    测试用例设计方法六脉神剑——第四剑:石破天惊,功能图法攻阵
    [oeasy]python0016_编码_encode_编号_字节_计算机
    机器人多设备局域网可通调试
    Python中实现数值交换的四种方式
    java毕业设计农田节水灌溉监测系统源码+lw文档+mybatis+系统+mysql数据库+调试
    【学习笔记】CF1817E Half-sum
    后端返回 date 时间日期格式为 UTC 格式字符串,形如 2022-08-11T10:50:31.050+00:00前端如何修改为yyyy-mm-dd
    springboot项目打jar包,运行时提示jar中没有主清单属性
    LAMMPS小技巧
  • 原文地址:https://blog.csdn.net/TaloyerG/article/details/132994439