在JSF中区分模型和控制器

时间:2011-08-14 19:36:36

标签: java model-view-controller design-patterns jsf cdi

我想清楚地了解开发JSF应用程序的正确方法。 在我们的项目中,模型和控制器是同一个类,由CDI bean表示。我有点困惑这是不是一个好习惯。据我了解MVC模式,控制器应该处理用户操作(例如提交表单),模型应该包含业务逻辑和数据。或者可以,他们在同一个班级? 此外,每个页面都应该有自己独立的控制器/模型(即它被认为是一种好的做法)?

2 个答案:

答案 0 :(得分:6)

通常最好有两个层 - 一个使用JSF托管bean(可能由CDI管理),另一个使用与使用它们的Web框架无关的bean。

对于“控制器” - FacesServlet可以被视为整个应用程序的"front controller"

答案 1 :(得分:4)

JSF控制器只是UI处理程序,它们不应该带有任何业务逻辑。通常还有更多层(我这里只包括与逻辑相关的层):

  1. UI控制器 - 与UI紧密相关,因此与用于MVC的技术紧密相关
  2. 服务层 - 是业务逻辑的门面入口点,通常还管理事务,在某些情况下 - 如果需要,还可以进行DTO /实体转换。它对您使用的Web MVC技术一无所知。
  3. 遵循域模型模式(有时称为域服务)的业务逻辑。