Model view controller javaee体系结构和模式

Model view controller javaee体系结构和模式,model-view-controller,jakarta-ee,architecture,design-patterns,multi-tier,Model View Controller,Jakarta Ee,Architecture,Design Patterns,Multi Tier,我正在为一个大学项目开发一个web应用程序,有人告诉我们使用JavaEE并提供文档。我很难理解如何在多层体系结构中适应MVC模式,以及如何描述它们,因为我在互联网上发现了一些不同的文章 从我所读到的(特别是sun.java.com上的蓝图),我应该使用4层(客户端、web、业务和数据),业务逻辑分为web层和业务层,不是吗?然后我可以使用MVC模式来组织这两个层: 模型=实体bean 视图=JSP Control=servlet和会话bean 我说得对吗?如果您使用servlet,它已经是J

我正在为一个大学项目开发一个web应用程序,有人告诉我们使用JavaEE并提供文档。我很难理解如何在多层体系结构中适应MVC模式,以及如何描述它们,因为我在互联网上发现了一些不同的文章

从我所读到的(特别是sun.java.com上的蓝图),我应该使用4层(客户端、web、业务和数据),业务逻辑分为web层和业务层,不是吗?然后我可以使用MVC模式来组织这两个层:

  • 模型=实体bean
  • 视图=JSP
  • Control=servlet和会话bean

我说得对吗?

如果您使用servlet,它已经是JavaEE了


不要让事情变得不必要的复杂。如果您只有一个web用户界面,而没有其他用户界面,那么将web层和业务层划分为两个层就太过分了。

在JavaEE中有几种实现MVC的方法

稍旧的方法(但取决于上下文)使用JSP作为视图,使用servlet作为控制器。人们经常争论模型到底是什么,但通常将其视为返回域实体(由JPA实体表示)的服务(由EJB会话bean表示)

在JavaEE的现代版本中,有一个名为JSF的默认MVC框架。遵循此框架,Facelets用于视图,并提供控制器(您不需要实现它)

有一个中间概念叫做
backingbean
,它通常被称为模型,但它本身并不是一个纯粹的模型。相反,它将委托给真实模型(例如EJB服务)。备份bean还可以承担一些控制器职责(发出重定向,或将消息放入某种队列中以供视图显示)

有时,人们认为创建一个web和业务层是过分的,但事实并非如此。这通常只是应用合理的OO原则的问题。另一个极端,例如,将所有东西都塞进JSP(html代码、控制器逻辑和业务代码)是非常非常糟糕的

请参见以下示例,了解3层(实际上是3层)Java EE MVC应用程序的简单程度:


一个相关的问题是这样的:

是的,我读到我可以只使用servlet而不使用会话bean,但我们的老师希望我们使用它们,并实现这样的体系结构。无论如何,我不确定我是否正确理解了多层和MVC。谢谢,这很有趣。我想我不会使用它,因为我的教授想要既有会话又有servlet的经典MVC,但无论如何,我学到了一些有趣的东西,特别是从你在链接主题中的回答中。