在实现MVC时,应用程序的哪一部分应该调用DAO中的方法?

Bil*_*lie 0 java jsp dao hibernate spring-mvc

我今天参加了考试,其中一个问题如下:

在实现MVC时,从哪个Web应用程序(控制器或视图)的园区我们应该调用在DAO实现中定义的方法?你应该解释一下.


我知道控制器负责将即将发出的http请求重定向到适当的视图,并且视图(JSP文件)应该使用DAO函数来获取信息并显示它.

我的讲师说我错了,控制员会对此作出回应.

当我问为什么时,他说"我应该听讲座".那么,为什么DAO应该从控制器调用而不是从视图中调用?

Tim*_*m B 5

你应该在讲座中听过.

对不起,开玩笑吧:)

模型 - 视图 - 控制器是用于各种UI设计的重要设计模式.

  • 视图是关于显示数据并与用户交互 - 没有别的
  • 模型是关于建模和存储数据 - 没有别的
  • 控制器处理数据,将内容映射到模型中等等.

您应该能够完全从MVC系统交换View,它将改变用户交互 - 但不会改变程序的行为.从那以后应该清楚为什么在视图中放置逻辑是一个坏主意.

DAO是关于如何实现数据存储和持久层的.视图是关于如何显示数据的.

它们是两个非常不同的工作,MVC的重点是分解并为他们提供自己独立的工作.您可以交换进出不同的持久层,并且视图不需要更改,您可以交换进出不同的视图,并且持久层不会更改.

通过将表示直接耦合到持久性,您将失去这种脱钩.正确的方法是编写视图,只关心模型.编写只关心其数据的模型,然后使用控制器将它们粘合在一起并填充模型.