2014-09-26 93 views
0

我知道问题是关于通过不同的方法解决问题,但让我详细说明我想问的问题以及我对它的理解程度。为什么我们在ATG中需要两种不同的方法-pull基于(液滴)和push基础(formhandlers)?

我们有两种用于ATG(或许多其他框架)拉和基于推的mvc方法。 据我所知,formhandlers和液滴都在不同的需求控制器的一部分,存储库是我们的模型,jsps提供的意见.. 如果我是正确的,直到这一点,然后什么目的的servlet链解决?适合MVC的这张照片?

请如果可能请从流程图的帮助下解释请求到响应(从头到尾)。

非常感谢专家。 请帮忙,我在任何地方都找不到这种解释。

+0

建议你看看在ATG帮助DAF管道。这在骨骼层面处理请求和响应。 DAF管道采用原始http请求/响应并转换为DynamoHttpServletRequest/Response。 servlet管道处理诸如会话管理,安全性等事情。关于每个servlet都做了些什么的文档是有限的,但一般而言这些名称是非常明显的。还要记住,ATG最初是建立在ATG自己的Dynamo服务器上运行的,并使用了比DAF管道更多的DAS管道。 – bated 2014-09-27 22:03:31

回答

1

ATG首先要记住的是它是一个旧平台。因此,当试图通过MVC镜头了解不同的机制时,请记住,没有什么是设计MVC时考虑到的 - 该平台早于Web开发中广泛的知识和对MVC模式的接受。

水滴是从JSP(和之前的JHTML)模板调用Java代码的广义机制。 J2EE-land中最接近的模拟是标记库。所以你可以用它们来完成许多不同的任务。您也可以将它们用作穷人的MVC控制器。这是通过编写专用于处理页面业务逻辑的自定义小滴类,并将相关页面状态设置为请求参数来完成的。然后在JSP页面的第一步调用这个滴。这与J2EE模型2没有什么不同,首先你编译的JSP开始执行,然后调用你的“控制器”代码,然后继续处理“视图”。

正如名称所示,表单处理程序是为处理表单提交而设计的。这些由servlet管道中的链接(DAFDropletEventServlet)执行,在发布页面之前开始呈现。表单处理程序的典型用法是在执行后发送重定向,并取消页面的呈现,这将中止servlet管道的任何进一步处理。 ATG提供的表单处理程序是最接近“控制器”的东西。但是,它们在处理GET请求时很糟糕,并且在用于此目的时会导致一些非常不幸的URL。

他们为什么创造了两种不同的机制?为什么他们随后没有引入更新的MVC模型作为平台的一部分?这些问题我无法回答。

0

ATG在页面呈现级别不是MVC。不要把它看作MVC。 ATG的核心是基本的Servlets API的扩展。

表单和表单处理,其中successUrlerrorUrl是一种MVC。水滴当然不是。

这是在ATG应用完全可以接受的是获取数据的页面渲染(即水滴)