服务模式 - 将数据从控制器传输到视图的最佳实践

时间:2013-10-29 16:29:28

标签: java java-ee design-patterns

所以问题。我们使用service to worker模式,现在正在寻找一种合适的模式来将数据从控制器传输到视图。任何帮助表示赞赏。

不幸的是我最初无法附上图表(这是一个很酷的网站,不是吗),因为我没有声望10并且感谢现在的人们

enter image description here 注释:TemplateEngine是jsp模板引擎的替代品。

所以我会尝试通过文字解释。

类:FrontController,Controller,View,Action,Jsp文件,EJB,Entity(Anemic Model)。所以FrontController路由到Controller并按顺序调用Controller的两个方法。 Controller只有两个公共方法processAction和processView。 ProcessAction调用Action(命令模式),所以

FronController调用Controller.processAction() - > Action - > EJB - >获取实体。

所以这里的FrontController必须调用Controller的第二种方法

FronController调用Controller.processView() - > View - >模板,jsp,助手等(此时我们需要在控制器中获得的数据)

EDITED: Controller.ProcessAction和Action.execute具有相同的签名:( HttpServletRequest请求,HttpServletResponse响应)。

请求/响应对象(上下文对象)怎么样?我已经阅读了核心j2ee模式,并感到惊讶。据我所知,这个对象从请求中获取数据,甚至进行验证。它的主要目标是作为工具处理数据,消除不同协议(html,xml,json)的依赖性。我感到惊讶的原因有两个:

  1. 在frontcontroller中创建了Context对象 - 在这一步我们很难定义我们将使用的上下文对象。通常情况下我们甚至需要另一个控制器。
  2. 我认为验证必须在EJB中执行。如果我们有两种客户端,原因很简单:浏览器和Java应用程序,而不是它们的共同点是EJB。所以它在EBJ中我们必须进行验证。
  3. 所以,我对其他人的意见很感兴趣。

1 个答案:

答案 0 :(得分:0)

我认为你可以在一个控制器中使用GetData(),在TemplateEngine层中组合GetData()。或者,另一种方法是添加一层服务层,以检索所有数据,控制器将组合服务层的所有GetData()函数。

谢谢,