ATG servlet 和 Droplet

ATG servlet and Droplet

我是 ATG 框架的新手,我想知道 ATG 中的 Servlet 和 Droplet 之间的区别。我读了一些教程,但仍然不清楚。

我已经有几年没有使用 ATG 了,您使用的版本可能与我不同,但是回答这个问题的一个简单方法是说 Servlet 更像是一个 J2EE MVC 概念,在那种情况下是控制器,而 Droplet 是 ATG 的 "controller"。 ATG 的设计模式不完全是 MVC(在大多数情况下,视图中往往有更多的逻辑),但 Droplet 是视图(您的 JSPs)用来获取数据的可重用组件来自模型(您的 xxxManager、xxxService、Repository 层 类 等)

例如,如果我正在处理要显示购物车的页面,我可能会在 J2EE 中的 web.xml 中注册一个“/Cart”servlet。在此 servlet 上调用 doGet 时,我将调用我需要的所有模型组件来收集有关购物车的数据,并使用 RequestDispatcher 将该数据发送到 JSP。我的所有 model/controller 逻辑都在这里完成,然后发送给视图呈现。

在 ATG 中,您倾向于较少依赖 web.xml 配置,而更多地依赖由 Nucleus 注册和实例化的组件。所以你可以创建你的 cart.jsp 并使用标签来获取你需要的数据。您可能有一个 droplet 来计算当前价格并显示它,或者将促销应用于配置文件并列出它们。页面需要的每一条数据,都可以用droplet标签来收集和展示。

您可能会说 droplet 往往是 "on page" 而 servlet 应该是 "between pages."

当您只说 Servlet 时,那是一个通用 Java 软件组件,它根据收到的请求提供功能。 Java servlet 需要 运行 在 servlet 容器中。

特定于 ATG,有两种称为 servlet 的组件 - DynamoServletPipelineableServlet

A DynamoServlet 是您需要扩展以创建 Droplet 的基础 class。 Droplet 基本上是一段 Java 代码,您可以在 ATG 应用程序 运行 的 JSP 页面上 运行。它使用 ATG 提供的标签包含在 JSP 页面中。当JSP执行时,它将执行Droplet中的代码并将Droplet的输出呈现在页面上。

A PipelineableServlet 是一个 class(它是称为 Servlet 管道的 classes 链的一部分),它在 HTTP 时提供功能收到请求。链中的每个 servlet 对请求执行特定操作,并将修改后的请求中继到链中的下一个 servlet。