关于spring mvc:请求MVC与组件MVC之间的区别

Difference between Request MVC and Component MVC

我听说JSF正在实现基于组件的MVC,而Spring MVC正在实现基于请求的MVC。 我想知道这两种类型之间的确切技术区别是什么。


在基于请求(动作)的MVC中,单个前端控制器servlet将基于请求URL /参数委派给动作模型。您可以直接在操作模型中使用原始的HttpServletRequestHttpServletResponse对象。您必须自己编写代码以收集,转换和验证请求参数,并在必要时更新模型值,然后才能调用业务操作。

在基于组件的MVC中,单个前端控制器将收集,转换和验证请求参数并自己更新模型值,因此您只需要自己担心业务操作。控制器如何在单个位置(视图)中定义如何收集/转换/验证/更新值。由于使用"普通" HTML无法做到这一点,因此需要一种特定的标记语言才能实现该目标。如果是JSF 2.0,则基于XML(XHTML)。您使用XML定义UI组件,这些组件又包含有关控制器应如何收集/转换/验证/更新模型值以及生成/呈现必要的HTML表示的信息。

此时的优点和缺点应该很明显:使用基于请求的MVC框架,您需要自己编写更多(样板)代码来实现目标。但是,最终您可以对流程和HTML / CSS / JS输出进行更精细的控制。使用基于组件的MVC框架,您无需自己编写太多代码。但是,您对过程和HTML / CSS / JS输出的粒度控制较少。因此,如果您想做的事情与标准描述和/或实现所提供的有所不同,那么当您对基于组件的MVC框架一无所知时,会浪费更多的时间。 。

Manfred Riem(JSF 2.x团队成员和前Java EE 8 MVC 1.0规范负责人)在Devoxx 14上关于MVC 1.0(JSR 371)的演讲中很好地概述了这一点:

photo

也可以看看:

  • 当可以通过CSS,HTML,JavaScript,jQuery实现UI时,JSF有什么需求?
  • Java Server Faces 2.0的主要缺点是什么?
  • 使用JSF作为Spring MVC的视图技术
  • 基于Web的设计模式应用程序