2014-09-26 94 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應用完全可以接受的是獲取數據的頁面渲染(即水滴)