JSF MVC框架中的MVC是什么组件?

问题描述 投票:93回答:4

在JSF MVC框架中谁是Model,View和Controller?

java model-view-controller design-patterns jsf
4个回答
143
投票

这取决于观点(双关语)。

在大型架构图片中,您自己的JSF代码是V:

M - 业务域/服务层(例如EJB / JPA / DAO) V - 您的JSF代码 C - FacesServlet

在开发人员图片中,建筑V依次可分为如下:

M - 实体 V - Facelets / JSP页面 C - 托管bean

在较小的客户端图片中,开发人员V又可以分类如下:

M - JSF组件树 V - 呈现HTML输出 C - 客户端(webbrowser)

在较小的JavaScript图片中,客户端V又可分为如下:

M - HTML DOM树 V - 视觉呈现 C - 事件监听器函数(最终用户交互和Ajax)

所以它基本上是M(M(M(MVC)C)C)C;)

请注意,一些启动器甚至一些非常基本的教程在托管bean中混合/复制/展平实体的属性,这将有效地使控制器成为模型。不用说,这是糟糕的设计(即不是一个干净的MVC设计)。

以下答案中的代码片段说明了正确的MVC方法:

The Definitive Guide to JSF in Java EE 8一书中,在第8章“Backing beans”,第276页中,下面的Venn图用于说明在与JSF开发人员相关的上下文中的支持bean在MVC范例中的位置。版权免责声明:本书由我撰写,图片由我创作。

enter image description here


36
投票

模特将是你的qazxsw poi

查看将是qazxsw poi,qazxsw poi(你可以在这里容纳各种观点)

控制器将是qazxsw poi

更新,希望这张图片更有帮助


4
投票

faces servlet管理faces生命周期,因此在这个意义上,控制器与你自己的代码相结合,可以在每个生命周期阶段调用

ManagedBean


-1
投票

Java Server Faces是一个MVC Web框架,其中MVC组件如下,

  1. Model - 它是使用@ManagedBean注释的托管bean类,它具有保存数据的属性以及相应的getter和setter。托管bean类还可以包含业务逻辑。这些也称为支持bean,它可以具有不同的范围,如请求,会话,应用程序。
  2. 视图 - 显示给客户端的用户界面,即.xhtml文件。它从托管bean获取数据,并将其呈现为响应。
  3. Controller - javax.servlet.webapp.FacesServlet是集中控制器类,它基本上是一个servlet。任何来到JSF的请求都会首先进入FacesServlet控制器。与我们编写自己的控制器类的JSP不同,在JSF中,控制器servlet是框架的固定部分,我们不编写它。

MVC流程 -

jsp

© www.soinside.com 2019 - 2024. All rights reserved.