我对 J2EE 服务的有限理解如下所示:
J2EE 是一个四层体系结构,它包括: (1)客户端层(表示层或应用程序层) - 小程序 (2)Web 层, - JSP 的 (3)Enterprise JavaBeans Tier(或Application Server Tier) (4)EIS 或数据层 - 选择的数据库位于此处。
客户端层创建由 Web 层分析的数据,Web 层将转换为数据层的业务逻辑。
我只是在学习什么是 REST 服务,并且很好奇您将在这个 4 层设置中拥有它们的哪个阶段。
一个有用的线程是关于层与层
的:从简化的物理角度来看,我们有客户端(浏览器),应用程序服务器,数据库服务器。 从逻辑的角度来看,我们可能有不同的层(再次简化):Web,业务逻辑,数据。
分层的思想是首先分离关注点(表示,业务逻辑,持久性等),并且较高层只能调用下面的直接层(因此在Web层只能调用业务逻辑之前的示例中,它不应该调用数据层)。这样做的好处是,每一层都有一个接口,该接口公开没有任何实现细节(代码到接口模式),因此您可以交换该层的实现。因此,现在您可以将数据存储在关系数据库中,但您可以创建一个新的实现,将数据存储在NoSql db中(您无需更改业务逻辑层的任何内容)。因此,您具有相同的数据层,但实现不同。
在传统的Java Web应用程序中,代码部署在应用程序服务器中,其输出(servlet)通常是显示在浏览器中的HTML。 因此,表示层(格式化等)是在每个客户端(请求)在服务器端完成的。在应用服务器中拥有客户端,我们有一个会话,因此每个客户端都有一个状态(例如:显示的语言数据,相应的日期格式等)。 REST 体系结构之所以进行更改,是因为它促进了无状态操作。这样做的后果之一是使用会话变量在浏览器中移动任何与客户端相关的编码(javascript Web框架的出现),并且Web层返回JSON/XML而不是HTML。
为了回答您的问题,您可能在业务逻辑之上有一个不同的 Web 层。一个可能返回 HTML,一个可能返回 JSON(想想它,就像数据层的例子一样)。