我听说控制器属于表示层。怎么可能?
我想:
是否有良好的链接来证明控制器属于表示层?
“Spring MVC用于表示层”:我们如何才能在表示层中使用MVC?
答案 0 :(得分:19)
表示层包含视图 和 控制器 您不能将MVC架构误认为是多层/层架构(尤其是3层架构)。大多数情况下,模型/视图/控制器不是Web应用程序的主要设计,它只是多层/层架构的一个子集。
看看这个过于简化的方案(您可以将DAO放在专用的数据访问层中,但这在本文中并不重要):
Spring MVC是一个演示框架:它处理控制器和视图。但是为什么Spring MVC中的“M”呢?仅仅因为,与许多其他表示框架一样,它自然地处理模型/实体(“M”)的表示。此表示形式是您的控制器中使用的表示形式,显示在视图中,以表单形式提交等。这就是为什么框架称为Spring MVC,即使模型/实体不是表示层的一部分。强>
我认为这是这个框架的一个好名字,因为它实际上是“MVC”导向的。实际上,模型/实体的表示可以是:
Spring's recommendation是直接使用模型/实体(“M”)对象:
可重复使用的业务代码,无需重复。将现有业务对象用作命令或表单对象,而不是镜像它们以扩展特定的框架基类。
这就是为什么我说这个框架非常“面向MVC”,与其他人一样,比如Struts,你必须使用不同的表单对象。
一些有趣的链接:
答案 1 :(得分:4)
控制器控制rpesentation层逻辑。对于所有业务代码,事务用例,持久性等,它通常委托给服务层。
这样做的一种典型方法是将事务服务实现为spring bean,并将这些spring bean注入控制器中。典型用例:创建新产品:
答案 2 :(得分:2)
这在很大程度上取决于您使用的MVC的风格,以及您使用它的环境。
例如,ASP.NET MVC完全是一种UI模式,因此所有三个部分都是演示文稿的一部分。
但是,在MVC的大多数实现中,Controller与用户交互,因此是UI层的一部分。它可以处理按钮按下和键盘输入...但在许多情况下,控制器还负责将模型和视图连接在一起。
一个普遍的事实是,如果你无法帮助它,你不应该在控制器中做业务逻辑。业务逻辑存在的地方取决于许多因素。它可能是某些实现中模型的一部分,或者它可能是MVC之外的独立层