java - Controller属于Presentation层?

标签 java model-view-controller design-patterns spring-mvc

听说controller属于表现层。怎么可能?

我认为:

  • View 用于演示
  • 模型用于业务逻辑
  • Controller 用于控制逻辑

有没有好的链接证明controller属于表现层?

《Spring MVC用于表现层》:如何只在表现层使用MVC?

最佳答案

表示层包含 View Controller 。
您一定不要将 MVC 架构误认为是多层/层架构(尤其是 3 层架构)。大多数时候,模型/ View / Controller 并不是 Web 应用程序的主要设计,它只是多层/层架构的一个子集。

看看这个过于简化的方案(您可以将 DAO 放在专用的数据访问层中,但这在这篇文章中并不重要):

Simplified layers

Spring MVC 是一个表示框架:它处理 Controller 和 View 。但是为什么 Spring MVC 中的“M”呢?只是因为,与许多其他表示框架一样,它自然地处理模型/实体(“M”)的表示。这种表示是在您的 Controller 中使用的,在您的 View 中显示的,在您的表单中提交的,等等。这就是框架称为 Spring MVC 的原因,即使模型/实体不是表示层的一部分。强>

我认为这是这个框架的好名字,因为它确实是面向“MVC”的。实际上,模型/实体的表示可以是:

  • 直接:框架直接处理模型/实体对象
  • 间接:框架处理一个表单对象或 DTO,其中包含与一个或多个实体相关的信息

Spring's recommendation是直接使用模型/实体(“M”)对象:

Reusable business code, no need for duplication. Use existing business objects as command or form objects instead of mirroring them to extend a particular framework base class.

这就是为什么我说该框架非常“面向 MVC”,与其他框架相比,例如 Struts,您必须使用不同的表单对象。

一些有趣的链接:

关于java - Controller属于Presentation层?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12429729/

相关文章:

javascript - 在 MVC 应用程序中将数据导出到 Excel

c# - ASP.NET MVC 通过 MVC 框架缓慢加载图像?

javascript - 向现有模块化模式对象添加新方法

java - 构造函数采用与参数相同的类型有什么用? java

java - Spring Web "java.lang.NoClassDefFoundError: antlr/RecognitionException] with root cause"错误

java - 尝试将对象设置为等于一个和另一个时出错(java,初学者)

c# - 我如何创建一个项目集合

java - 构建 war 时创建额外的 jar

javascript - 正则表达式不能在 c# 中工作,但可以在 javascript 中工作

design-patterns - 您将如何设计您的应用程序?通过继承还是通过组合?