了解JSF的MVC框架了解JSF的MVC框架(Understanding JSF as a MVC

2019-05-13 12:15发布

我读的JSF,我感到相当困惑,为什么JSF是一个MVC框架(或至少其中部分属于哪个“字母”)。

我看了看这个问题: 在JSF的MVC框架的哪些组件是MVC?

我看那里,如果你不看它以聚集的观点做模型是你的实体,视图是XHTML代码和控制器的托管Bean。 嗯......好吧,但并不经常依​​赖于开展进一步调用业务逻辑返回一组例如实体的观点,并说明还是放不下?

我读它描述为管理豆一本书是某种“消息”使者的面的Servlet(控制器)使用调用业务层(型号),然后将XHTML代码是视图。

有这么多的解释和差异,所以我不知道哪个或如何去了解它。

Answer 1:

为什么它往往不是在JSF和许多其他Web框架完全清楚这其中的部分对应于MVC的一部分,部分原因是,MVC模式最初设计用于桌面应用程序。

在桌面应用程序,节点M,V和C是最大连接图形,这意味着每一部分都可以与每个其它部分进行通信。 例如,如果模型的变化,它可以推动这种变化的看法。 这是特别明显的情况下,有一个桌面应用程序的视图的多个表示。 换一个,并查看实时的其他更新。

由于客户端/服务器和Web应用程序请求/响应自然,经典的MVC不映射1:1到大多数Web框架。

具体而言,在JSF的映射如下所示:

  • 模型 -服务/ DAO的加上他们的生产和消费实体。 的入口点,这是托管bean,但在Java EE(其中JSF是其一部分)这些工件通常由EJB和JPA分别实现。
  • 视图 - UI组件和它们的组成成一个完整的页面。 这完全JSF的域,并通过JSF实现UIComponent s和Facelets的。
  • 控制器 -交通警察一个处理命令和来自用户的输入数据,该路由到正确的零件,并选择用于显示的图。 在JSF一个不写此控制器,但它已经由框架(它是提供FacesServlet )。

尤其是最后一部分是经常不能很好地理解:在JSF不实现的控制器。 因此,背衬豆或任何其他种类的托管bean的不是控制器。

第一部分(模型)也并不总是清楚地理解。 业务逻辑可以通过EJB和JPA来实现,但是从JSF一切由一个值绑定引用的点是模型。 这也是JSF生命周期阶段的一个的名字来源于: Update Model 。 在这个阶段JSF从UI组件到模型推数据。 在这个意义上说,(JSF)管理的Bean因此模型。

虽然JSF本身没有明确界定的概念,有管理的bean称为辅助bean的经常反复出现和具体用法。

对于JSF后台bean仍然是模型,但实际上它是在模型,视图和控制器中间坐着一个管道元素。 因为它执行一些任务,其可以被看作是一些控制器任务,这是经常被误认为是控制器。 但是,如前所述,这是不正确的。 它也可以执行一些任务模式,偶尔做一些视图逻辑。

也可以看看:

  • 什么是在老式的三层模式MVC模式的主要优点
  • 的JavaServer的MVC架构面(第4.3章)


Answer 2:

在简约的形式,它是:

  • 型号:您使用的持久性(休眠,JPA等)和数据建模(Java组件)什么。
  • 查看:XHTML,JSP等
  • 控制器:Mananaged豆类。

JSF让你能够控制你的请求/响应的能力。 在创建模型的方式/查看它没有直接连接到MVC框架的概念。 这只是一个选择的问题。 MVC的概念是相关的代码组织。

类似Struts是一个MVC框架,但它主要作为控制器。

我想我帮你更好地阐明你的想法。



Answer 3:

关于托管bean想法的有趣的事情是,它都可以用作模型(MVC模式)或控制器( 调解控制器MVC模式 ,也称为模型-视图-适配器),其中模型和视图不相互作用直。

在该后一种情况下,路由机制不控制器,随着业务逻辑被包含在管理bean和模型是一个严格的域模型。 然后,我们有:

  • 模型 -包含域模型,在大多数情况下代表了数据库中的表,通过持续的DAO。

  • 视图 - UI组件,连接到豆;

  • 控制器 -包含业务逻辑和视图和模型之间处理通信的托管Bean。

我觉得有些人混淆了调解控制器MVC纯MVC,从而导致所遇到的不同的解释。



Answer 4:

我想,这里的所有anwsers是正确的。 但混乱的主要问题出现,我从混合MVC组件的定义从框架,JSF在这里,就在你的应用程序设计定义这些模型和控制器组件来:

Assume you change from JSF to any other Web UI framework in your business application: You will still have a "business model" and a "business controller". (In our projects we just call these components "the model" and "the process".)

What does this mean: Either you can't use mvc for the description of the overall application architecture, but solely for the UI, or you may have to accept many controller, model like components in your full application stack.



文章来源: Understanding JSF as a MVC framework