所以这个问题。我们使用服务到工作者模式,现在正在寻找一种合适的模式来将数据从控制器传输到视图。任何帮助表示赞赏。
不幸的是,我一开始无法附上图表(这是一个很酷的网站,不是吗)因为我没有声誉 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)的依赖性。我感到惊讶的原因有两个:
- 上下文对象是在前端控制器中创建的——在这一步我们几乎无法定义我们将使用的上下文对象。在某些情况下,我们甚至需要另一个控制器。
- 我认为必须在 EJB 中执行验证。原因很简单,如果我们有两种客户端:浏览器和 java 应用程序,它们的共同点是 EJB。所以我们必须在 EBJ 中进行验证。
所以,我很在意别人的看法。