Answers:
这取决于观点(双关语意)。
在总体架构图中,您自己的JSF代码是V:
M-业务域/服务层(例如EJB / JPA / DAO)
V-您的JSF代码
C -FacesServlet
在开发人员图中,体系结构V可以如下划分:
M-实体
V -Facelets / JSP页面
C-托管bean
在较小的客户图中,开发人员V可以如下划分:
M -JSF组件树
V-呈现的HTML输出
C-客户端(Web 浏览器)
在较小的JavaScript图片中,客户端V可以如下划分:
M -HTML DOM树
V-可视表示
C-事件侦听器功能(最终用户交互和Ajax)
所以基本上是M(M(M(MVC)C)C)C;)
请注意,一些入门者,甚至某些(非常基础的)教程都在托管Bean中混合/复制/展平实体的属性,这将有效地使控制器成为模型。不用说这是较差的设计(即不是干净的MVC设计)。
以下答案中的代码段说明了正确的MVC方法:
在《Java EE 8中的JSF权威指南》一书的第8章“ Backing bean”(第276页)中,下面的Venn图用于说明MBean范式中Backing bean在与JSF开发人员相关的上下文中的位置。 。版权免责声明:书是我写的,图片是我创造的。
<h:inputText value="#{register.username}">
代替<h:inputText value="#{register.user.name}">
。
中号奥德尔将是你的ManagedBean
V iew是jsp
,XHTML
(那么您可以在此处容纳各种视图)
ç ontroller会FacesServlet
更新,希望这张照片有更多帮助
FacesServlet
是一个控制器,我不能扩展它。我不能拥有自己的控制器...我同意Shervin的观点,托管Bean是控制器。谢尔文,发布您自己的替代答案如何?
FacesServlet
,正在控制。
Faces Servlet管理着Faces的生命周期,因此从某种意义上讲,它是控制器与您自己的代码相结合,可以在每个生命周期阶段调用它
Java Server Faces是一个MVC Web框架,其中的MVC组件如下所示,
模型 -这是用@ManagedBean注释的托管Bean类,该类具有保存数据以及相应的getter和setter的属性。托管bean类还可以包含业务逻辑,也称为支持bean,可以具有不同的作用域,例如请求,会话,应用程序。
视图 -显示给客户端的用户界面,即.xhtml文件。它从托管bean获取数据,并将其呈现为响应。
控制器 -javax.servlet.webapp.FacesServlet是集中式控制器类,它基本上是一个servlet。首先到达JSF的任何请求都将发送到FacesServlet控制器。与在其中编写我们自己的控制器类的JSP不同,在JSF中,控制器servlet是框架的固定部分,我们不编写它。
MVC流程-