3

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

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

在此处输入图像描述 评论:TemplateEngine 是 jsp 模板引擎的任何替代品。

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

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

FronController 调用 Controller.processAction()->Action -> EJB ->get Entity。

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

FronController 调用 Controller.processView()->View -> Templating、jsp、helpers 等(此时我们需要控制器中的数据)

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

请求/响应对象(上下文对象)呢?我读过核心 j2ee 模式并感到惊讶。据我了解,该对象从请求中获取数据,甚至进行验证。它的主要目标是作为一种工具来处理数据,以消除不同协议(html、xml、json)的依赖性。我感到惊讶的原因有两个:

  1. 上下文对象是在前端控制器中创建的——在这一步我们几乎无法定义我们将使用的上下文对象。在某些情况下,我们甚至需要另一个控制器。
  2. 我认为必须在 EJB 中执行验证。原因很简单,如果我们有两种客户端:浏览器和 java 应用程序,它们的共同点是 EJB。所以我们必须在 EBJ 中进行验证。

所以,我很在意别人的看法。

4

1 回答 1

0

我认为您可以在一个控制器中拥有 GetData(),在 TemplateEngine 层中结合 GetData()。或者,另一种方法是再增加一层服务层,以检索所有数据,控制器将结合服务层的所有 GetData() 函数。

谢谢,

于 2015-01-26T04:21:32.790 回答