【问题标题】:Simple MVC for Java EE Web Applications?用于 Java EE Web 应用程序的简单 MVC?
【发布时间】:2009-05-01 14:37:06
【问题描述】:

MVC 方法的 Web 开发目标之一是分离模型、视图和控制器。

假设在类似 Java EE Struts 的环境中,您将 Struts Action 与控制器关联,将 Java bean 与模型关联,并将 JSP 和/或 ActionForm 与 View 关联。

我的问题是,您倾向于在哪里执行任何逻辑来填充 JSP 上的数据。将任何类型的逻辑或处理放在视图 ActionForm 中似乎是不好的做法,将任何类型的逻辑放在 JSP 中是非常糟糕的。

您是否包含一个“Manager”类来在视图表单中向用户显示数据之前对其进行操作。

这是一个简单的例子。您从数据库中取出名字,姓氏,然后您需要调整格式(将所有大写字符串转换为混合大小写)。在该字符串到达​​ JSP 视图之前操作该字符串的逻辑是否会将该逻辑添加到管理器类中?

【问题讨论】:

    标签: model-view-controller jakarta-ee struts


    【解决方案1】:

    如果它的逻辑只与视图有关(在您的示例中,使数据看起来“漂亮”),那么我会将它放在视图中。但是,如果您稍后要保存修改后的数据,那么它应该在业务层中。不过,总的来说,我倾向于在 View 和 Control(您的 Manager 类)之间保留一层,它只关心显示问题和输入的高级验证,而不是复杂的业务规则(确保非常糟糕的数据永远不会到达业务层)。

    【讨论】:

      【解决方案2】:

      这在很大程度上取决于您使用的框架。我认为这种事情应该在视图中完成,但具体如何去做会有所不同。

      如果您使用的是 JSP,编写自定义标签库来做您想做的事情可能是有意义的——因此它与实际的 HTML 是分开的,但仍在“视图”中。

      所以,你会得到类似的东西:

      <td><mytag:mixedCase value="${user.firstname}" /></td>
      

      等等

      【讨论】:

        【解决方案3】:

        对于简单的表示问题,例如大写字符串,我会将它放在 JSP 中。对于更复杂的业务逻辑,我会把它放在模型类中。您不希望将控制器与业务逻辑混为一谈。将其放入模型的另一个优点是可以进行单元测试。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2014-03-24
          • 1970-01-01
          • 1970-01-01
          • 2015-04-22
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多