1

我刚刚开始在我的 Java 应用程序中使用 MVC 模式。我以前在 CodeIgniter 中使用过一点 MVC,但我想确保我能做对。

  • 视图是向控制器发送输入的 GUI 文件。

  • 然后控制器接收这些输入,并最终将它们发送到模型。

在我的 CodeIgniter 应用程序中,我使用的所有模型都是与数据库相关的东西。例如,如果我需要验证电子邮件,我应该在 Controller 中还是在 Model 中进行?

4

3 回答 3

3

在哪里进行验证是一个在 MVC 模式中仍有待讨论的问题。

一些琐碎的验证可以而且应该在视图上完成。示例:采用数值的文本输入小部件甚至不应该允许用户输入字母。它不必咨询控制器或模型来做到这一点。

有人说控制器的工作是确保它不会向模型提供垃圾,因为决定什么是有效的,什么是无效的是业务逻辑的一部分。

有人说模型的工作是确保其自身的一致性,因此它应该验证来自控制器的所有内容并拒绝任何垃圾数据。

tl;博士:这取决于。

于 2013-02-15T09:52:10.610 回答
1

客户端验证必须合并到 View 中,而服务器端验证与您的场景有关,Controller 最适合这项工作。模型必须仅用于执行一些业务逻辑和数据库流程。

于 2013-02-15T09:55:38.743 回答
0

从 MVC 模型

  • View 负责在您的应用程序和外部之间充当接口/端点,通常它是某种 GUI
  • 控制器代表调度部分,应该保持轻量级
  • 模型处理您的业务逻辑,与数据库对话等。

关于您关于电子邮件验证的问题,您应该在两个地方进行,通过 javascript 在 View/GUI 中进行,以确保在用户输入错误电子邮件地址的情况下获得快速而漂亮的反馈,并避免您遭受无用的点击。但除此之外,您还必须在服务器端的某个地方进行操作。实际的逻辑将在模型层中,类似 isValidEmail(String emailAddress) 的方法返回一个布尔值,并在模型中的某处声明并从控制器调用。我在想一些类似的东西:

    public void myAction() {
       //we are in the controller
       if(!Manager.isValidEmail(emailAddressAsString)) {
          dispatchBadEmailView(); //dispatch to a bad email address view
       }
    }

这是我的意见,如果你还没有,尝试使用 Spring MVC 或类似的东西,它有很大帮助,在这里阅读更多:http ://www.mkyong.com/tutorials/spring-mvc-tutorials/

于 2013-02-15T09:55:31.360 回答