【问题标题】:Difference between Request MVC and Component MVC [closed]请求 MVC 和组件 MVC 之间的区别 [关闭]
【发布时间】:2011-06-15 16:07:32
【问题描述】:

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

【问题讨论】:

  • 许多好的问题会根据专家的经验产生一定程度的意见,但这个问题的答案往往几乎完全基于意见,而不是事实、参考资料或特定专业知识。
  • 恕我直言,技术差异请求并非主要基于意见。

标签: spring-mvc jsf design-patterns model-view-controller


【解决方案1】:

在基于请求(动作)的 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 规范负责人)在 his speech about MVC 1.0 (JSR 371) on Devoxx 14 期间很好地概述了它:

另见:

【讨论】:

  • 很多人说,在MVC模型中代表的是数据库。这是真的吗?是bean还是数据库?
  • 不,它没有明确表示数据库。在 Java 世界中,模型只是一个 Javabean。 Javabean 反过来可以是一个数据库实体。正是 JDBC 或 JPA 代码使用该类在 Java 运行时环境和数据库表之间映射/传输值。
  • 这样就使得asp .net mvc组件基于,仪式?
  • asp.net mvc 是基于请求的,它是无状态的,基于 GET/POST 机制。
  • +1 用于发布 Manfred Riem 在 Devoxx 上的演讲图片。在谷歌搜索这个主题时,我想到了那个确切的幻灯片。
猜你喜欢
  • 1970-01-01
  • 2017-03-07
  • 2012-11-24
  • 2015-06-04
  • 2013-01-22
  • 2013-04-29
  • 2015-12-31
  • 2010-10-22
  • 2013-01-04
相关资源
最近更新 更多