Java EE 中有几种 MVC 方法。
较旧的方法(但取决于上下文仍然有效)将 JSP 用于视图,将 Servlet 用于控制器。经常争论模型到底是什么,但它通常被认为是返回域实体(例如 JPA 实体表示)的服务(例如由 EJB 会话 bean 表示)。
在 Java EE 的现代版本中,有一个名为 JSF 的默认 MVC 框架。按照这个框架,Facelets 用于视图并给出了控制器(你不需要实现它)。
有一个中间概念叫做backing bean
,它通常被称为模型,但它本身并不是一个纯粹的模型。相反,它委托给真实模型(例如 EJB 服务)。支持 bean 还可以承担一些控制器职责(发出重定向,或将消息放入某种队列以供视图显示)。
有时人们认为创建 Web 和业务层过于矫枉过正,但绝对不必如此。这通常只是应用健全的面向对象原则的问题。另一个极端,例如在 JSP 中填充所有内容(html 代码、控制器逻辑和业务代码)则要糟糕得多。
请参阅此示例,了解 3 层(实际上是 3 层)Java EE MVC 应用程序有多简单:Minimal 3-tier Java EE app, without any XML config
一个相关的问题是:MVC 模式相对于老式的 3 层模式的主要优势是什么