请求 MVC 和组件 MVC 之间的区别 [关闭]

2023-12-10

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


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

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

此时优点和缺点应该很清楚:使用基于请求的 MVC 框架,您需要自己编写更多(样板)代码才能实现目标。然而,您最终可以对流程和 HTML/CSS/JS 输出进行更细粒度的控制。使用基于组件的 MVC 框架,您不需要自己编写太多代码。然而,您对流程和 HTML/CSS/JS 输出的细粒度控制较少。所以如果你想做一些事情bit与标准描述和/或实现提供的不同,那么当您不熟悉其来龙去脉时,您将在基于组件的 MVC 框架中浪费更多时间。

Manfred Riem(JSF 2.x 团队成员和前 Java EE 8 MVC 1.0 规范负责人)在他在 Devoxx 14 上关于 MVC 1.0 (JSR 371) 的演讲:

photo

也可以看看:

  • 当 UI 可以通过 CSS、HTML、JavaScript、jQuery 实现时,JSF 还需要什么?
  • Java Server Faces 2.0 的主要缺点是什么?
  • 使用JSF作为Spring MVC的视图技术
  • 基于网络的应用程序设计模式
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

请求 MVC 和组件 MVC 之间的区别 [关闭] 的相关文章

随机推荐

  • JavaFX EXCEPTION_ACCESS_VIOLATION

    我对 JavaFX 桌面应用程序有疑问 特别是 3D 渲染功能 每次我尝试构建和启动 JavaFX 应用程序时 JVM 都会崩溃 并且会收到类似于以下错误的错误 A fatal error has been detected by the
  • 找不到要加载的 DSO:libhermes-executor-release.so

    log Time Tag Message 15 56 52 131 SoLoader couldn t find DSO to load libjscexecutor so 15 56 54 275 SoLoader couldn t fi
  • 如何在powershell中向异步作业添加回调函数并获取返回数据

    我一直在互联网上搜索并组合了许多不同的代码片段 但我只是没有成功地为我的异步作业创建回调 我的想法是 我想运行多个作业 并且使用回调方法 我将能够解析不同作业的输出 以更改主脚本中的某些状态和输出 目前我有这个 虽然事件被调用 但我无法获得
  • 找不到 JSP 文件可能是 spring 中的一个错误吗

    我在我的应用程序中遵循了 Spring Boot 的官方文件和包结构 但我仍然收到白标签页面错误 大多数答案和建议都不能解决这个问题 这可能是 Spring Boot 中的一个错误吗 下面是我放置代码的方式以及文件和文件夹的排列结构 应用程
  • 自定义视图,不需要 xml 中的layout_width

    Android SDK有TableLayout容器
  • 仅在使用 iTextSharp 进行生产时出现“文档未打开”错误

    我在 iTextSharp 中收到 文档未打开 错误 但仅限于生产环境 该代码在我的开发机器和暂存中运行良好 我在阶段服务器上的 Temp 文件夹中设置了相同的权限 public static byte ConvertHtmlToPdf s
  • 使用 Java 在多个文本文件中查找并替换一个单词?

    如何使用 Java 在多个文本文件中查找并替换单词 这是我为单个人做的方法String public class ReplaceAll public static void main String args String str We wa
  • Android 导航架构组件 - 获取当前可见片段

    在尝试导航组件之前 我曾经手动执行片段事务并使用片段标签来获取当前片段 val fragment MyFragment supportFragmentManager findFragmentByTag tag MyFragment 现在在我
  • 使用 NHibernate 测试连接参数

    我们有一个程序 用户可以在其中指定他们的数据库连接参数 通常的嫌疑人包括主机 端口 用户名 密码和表名 我们使用 NHibernate 连接到数据库 我们想要做的是能够使用 NHibernate 构建配置 然后在继续其他操作之前测试连接参数
  • Dagger2 和依赖组件中的限定符

    我有一个应用程序组件和一个依赖组件 应用程序组件声明显式依赖项 依赖组件可以注入这些依赖项 但是 当我有一个必须使用 Qualifier 消除歧义的依赖项时 依赖组件无法注入该依赖项 这是应用程序组件 Component modules A
  • java 在子类构造函数中初始化基类字段

    这是一个关于java子类的非常基本的问题 我还是不明白 假设我有一个包含三个字段且仅包含默认构造函数的超类 public class Superclass public int a public int b public int c 我想添
  • get_map 发生了什么?

    我今天开始使用 get map 向 googlemaps 发出大约 230 个地图请求 然后出现错误 丢失了原始错误 我的第一个假设是我使用它超出了 api 的限制 但我尝试使用开放街道地图 api 作为源 我收到的错误消息仍然看起来像 g
  • 使用 Vbscript 将记录批量插入到 Access 中

    我真的对这个感到抓狂 我有一个 vbscript 我正在尝试将几十万条记录插入到 Access 数据库中 显然 如果我一次只执行一个操作 速度会很慢 所以我想我可以通过某种事务批量插入它们 所以我尝试写这个 set rs CreateObj
  • 使用 jOOQ 查找即将到来的生日

    我正在尝试将查找即将到来的生日的现有查询转换为使用 jOOQ 我原来的查询 使用 MySQL 并且有点简化 是 SELECT COUNT FROM people WHERE DATE ADD people dob INTERVAL YEAR
  • 如何在python中编写没有任何分隔符的文本文件?

    我希望在 Python 2 7 中编写一个包含 6 行的简单文本文件 我正在使用这段代码 import csv export open images2 test tfw wb writer csv writer export delimit
  • Django 1 到 Django 2 on_delete 错误

    我相信这个工作流程是为以前的 Django 版本创建的 现在 当我尝试升级它时 添加 on delete 时出现错误 这是我所做的 但它仍然不起作用 我想知道我做错了什么 ORIGINAL class Task AbstractEntity
  • 不要在成员签名中嵌套泛型类型

    我已经获得了一个扩展类 它实现了以下具有违反 CA1006 DoNotNestGenericTypesInMemberSignatures 规则的签名的成员 警告所指的代码包含在下面 我应该如何重构代码来解决 CA1006 警告 请记住 我
  • 当不需要站点登录时,是否可以让数据库 (Cloud Firestore) 不安全?

    我正在构建一个游戏Angular并且 有史以来第一次 我尝试添加一个高分表 我已经设置了一个Firebase帐户并获得了Firestore Beta 数据库正在工作并已连接 我想要一个非常简单的高分系统 用户不需要登录或创建帐户 您只需打开
  • 任何生成 html 表单的工具[关闭]

    Closed 这个问题不符合堆栈溢出指南 目前不接受答案 我想根据服务器的 json 响应生成 html 表单 在 JSON 响应中 将有输入类型 输入标题所有必要信息 它可以是 checkbox radio button texarea
  • 请求 MVC 和组件 MVC 之间的区别 [关闭]

    Closed 这个问题是基于意见的 目前不接受答案 我听说JSF正在实现基于组件的MVC 而Spring MVC正在实现基于请求的MVC 我想知道这两种类型之间的确切技术差异是什么 在基于请求 操作 的 MVC 中 单个前端控制器 serv