请求MVC和组件MVC之间的区别
我听说JSF正在实现基于组件的MVC,Spring MVC正在实现基于请求的MVC。 我想知道这两种类型之间的确切技术差异是什么。
在基于请求(动作)的MVC中,单个前端控制器servlet将根据请求URL / params委托给动作模型。 您直接使用操作模型中的原始HttpServletRequest
和HttpServletResponse
对象。 您必须自己编写代码才能收集,转换和验证请求参数,并在必要时更新模型值,然后才能调用业务操作。
在基于组件的MVC中,单个前端控制器将收集,转换和验证请求参数并自行更新模型值,以便您只需要担心自己的业务操作。 该视图在一个地方定义了控制器如何收集/转换/验证/更新值。 由于“简单”HTML无法实现,因此需要特定的标记语言才能实现此目标。 在JSF 2.0的情况下,这就是基于XML(XHTML)的。 您使用XML来定义UI组件,这些组件又包含有关控制器应该如何收集/转换/验证/更新模型值并生成/呈现必要的HTML表示的信息。
在这一点上,优点和缺点应该清楚:使用基于请求的MVC框架,您需要自己编写更多(样板)代码以实现目标。 然而,你最终会对流程和HTML / CSS / JS输出进行更细致的控制。 使用基于组件的MVC框架,您无需自己编写大量代码。 但是,对流程和HTML / CSS / JS输出的细粒度控制较少。 因此,如果您想要做的事情与标准描述和/或实现提供的有所不同,那么当您不熟悉它的入口和出口时,您会在基于组件的MVC框架中浪费更多时间。
在Devoxx 14上关于MVC 1.0(JSR 371)的演讲中,Manfred Riem(JSF 2.x团队成员和前Java EE 8 MVC 1.0规范领导)已经很好地概述了它:
也可以看看:
上一篇: Difference between Request MVC and Component MVC
下一篇: Retrieving servlet context, session and request in a POJO outside container