我听说控制器属于表示层。这怎么可能?我想:
是否有良好的链接来证明控制器属于表示层?Spring MVC用于表示层:我们怎么能只在表示层使用MVC?
dfuffjeb1#
表示层包含视图***和***控制器。您一定不要把MVC架构误认为是多层/层架构(尤其是3层架构)。大多数时候,模型/视图/控制器并不是Web应用程序的主要设计,它只是多层/层架构的一个子集。看看这个过于简化的方案(您可以将DAO放在专用的数据访问层中,但这在本文中并不重要):
Spring MVC是一个表示框架:它处理控制器和视图。为什么Spring MVC中有“M”?只是因为,与许多其他表示框架一样,它自然地处理模型/实体(“M”)的表示。这种表示是在控制器中使用的、在视图中显示的、在表单中提交的等。**这就是为什么这个框架被称为Spring MVC,即使模型/实体不是呈现层的一部分。我认为这是一个很好的名字,因为它真的是面向“MVC”的。实际上,模型/实体的表示可以是:
Spring的建议是直接使用model/entity(“M”)对象:可重用的业务代码,无需重复。使用现有业务对象作为命令或窗体对象,而不是镜像它们来扩展特定的框架基类。这就是为什么我说这个框架是非常“MVC”导向的,与其他框架相比,比如Struts,你必须使用不同的表单对象。一些有趣的链接:
pb3s4cty2#
控制器控制表示层逻辑。对于所有业务代码、事务用例、持久性等,它通常委托给服务层。一种典型的方法是将事务服务实现为springbean,并将这些springbean注入到控制器中。典型用例:创建新产品:1.控制器从浏览器接收命令bean1.它验证是否存在所有必需的数据,如果不存在,将重新显示带有错误消息的产品创建页面1.它调用服务bean来创建产品1.服务bean在事务中运行。它从数据库中获取产品类别,将产品附加到其类别,根据当前定价策略计算产品的价格,向外部应用程序发送JMS消息,并返回创建产品的ID1.控制器使用创建的产品的ID作为URL参数重定向到产品详细信息页面。
xfb7svmp3#
这在很大程度上取决于您使用的MVC的风格,以及您在什么环境中使用它。例如,ASP.NETMVC完全是一个UI模式,所以这三个部分都是表示的一部分。然而,在MVC的大多数实现中,控制器与用户交互,因此是UI层的一部分。它可以处理按钮按压和键盘输入。。但在许多情况下,控制器还负责将模型和视图连接在一起。一个普遍的真理是,如果你不能帮助它,就不应该在控制器中执行业务逻辑。业务逻辑存在的位置取决于许多因素。在某些实现中,它可能是模型的一部分,也可能是MVC之外的独立层
8fq7wneg4#
您从哪里获得Spring MVC is used for presentation layer报价?首先,我认为理解MVC在Sping Boot 的上下文中的含义很重要。在Sprint Boot 中,model代表数据。因此,您在那里处理任何业务操作,而不是在控制器中。view代表用户界面!
Spring MVC is used for presentation layer
控制器充当模型和视图之间的中介。控制器接收来自用户的输入,与必要的服务或业务逻辑进行交互以检索或操作数据,然后准备要由视图显示的响应。既然你已经在这里说了,它不属于业务层,因为它不应该对数据做任何操作。
而控制器属于表示层的原因变得更加清楚,因为它
4条答案
按热度按时间dfuffjeb1#
表示层包含视图***和***控制器。
您一定不要把MVC架构误认为是多层/层架构(尤其是3层架构)。大多数时候,模型/视图/控制器并不是Web应用程序的主要设计,它只是多层/层架构的一个子集。
看看这个过于简化的方案(您可以将DAO放在专用的数据访问层中,但这在本文中并不重要):
Spring MVC是一个表示框架:它处理控制器和视图。为什么Spring MVC中有“M”?只是因为,与许多其他表示框架一样,它自然地处理模型/实体(“M”)的表示。这种表示是在控制器中使用的、在视图中显示的、在表单中提交的等。**这就是为什么这个框架被称为Spring MVC,即使模型/实体不是呈现层的一部分。
我认为这是一个很好的名字,因为它真的是面向“MVC”的。实际上,模型/实体的表示可以是:
Spring的建议是直接使用model/entity(“M”)对象:
可重用的业务代码,无需重复。使用现有业务对象作为命令或窗体对象,而不是镜像它们来扩展特定的框架基类。
这就是为什么我说这个框架是非常“MVC”导向的,与其他框架相比,比如Struts,你必须使用不同的表单对象。
一些有趣的链接:
pb3s4cty2#
控制器控制表示层逻辑。对于所有业务代码、事务用例、持久性等,它通常委托给服务层。
一种典型的方法是将事务服务实现为springbean,并将这些springbean注入到控制器中。典型用例:创建新产品:
1.控制器从浏览器接收命令bean
1.它验证是否存在所有必需的数据,如果不存在,将重新显示带有错误消息的产品创建页面
1.它调用服务bean来创建产品
1.服务bean在事务中运行。它从数据库中获取产品类别,将产品附加到其类别,根据当前定价策略计算产品的价格,向外部应用程序发送JMS消息,并返回创建产品的ID
1.控制器使用创建的产品的ID作为URL参数重定向到产品详细信息页面。
xfb7svmp3#
这在很大程度上取决于您使用的MVC的风格,以及您在什么环境中使用它。
例如,ASP.NETMVC完全是一个UI模式,所以这三个部分都是表示的一部分。
然而,在MVC的大多数实现中,控制器与用户交互,因此是UI层的一部分。它可以处理按钮按压和键盘输入。。但在许多情况下,控制器还负责将模型和视图连接在一起。
一个普遍的真理是,如果你不能帮助它,就不应该在控制器中执行业务逻辑。业务逻辑存在的位置取决于许多因素。在某些实现中,它可能是模型的一部分,也可能是MVC之外的独立层
8fq7wneg4#
您从哪里获得
Spring MVC is used for presentation layer
报价?首先,我认为理解MVC在Sping Boot 的上下文中的含义很重要。
在Sprint Boot 中,model代表数据。因此,您在那里处理任何业务操作,而不是在控制器中。view代表用户界面!
控制器充当模型和视图之间的中介。控制器接收来自用户的输入,与必要的服务或业务逻辑进行交互以检索或操作数据,然后准备要由视图显示的响应。既然你已经在这里说了,它不属于业务层,因为它不应该对数据做任何操作。
而控制器属于表示层的原因变得更加清楚,因为它