Spring mvc springmvc与Web应用体系结构

Spring mvc springmvc与Web应用体系结构,spring-mvc,architecture,Spring Mvc,Architecture,我对SpringMVC的理解是,视图层负责填充数据的用户界面,模型表示视图层可用的值的映射,控制器控制如何和哪些数据被传递到模型以及执行哪些业务逻辑。业务逻辑可以分为一个或多个其他层——通常是服务层和/或数据访问层。这是正确的吗 我已经看到了MVC模式的其他解释,其中模型被认为是一个包含实体、数据访问对象和服务的层。视图负责用户界面。控制器是两者之间的网关。我认为这不适用于Spring MVC和其他针对web框架的MVC实现。您在第一段中概述的理解基本上是正确的。我稍有不同的地方在于将模型、视图

我对SpringMVC的理解是,视图层负责填充数据的用户界面,模型表示视图层可用的值的映射,控制器控制如何和哪些数据被传递到模型以及执行哪些业务逻辑。业务逻辑可以分为一个或多个其他层——通常是服务层和/或数据访问层。这是正确的吗


我已经看到了MVC模式的其他解释,其中模型被认为是一个包含实体、数据访问对象和服务的层。视图负责用户界面。控制器是两者之间的网关。我认为这不适用于Spring MVC和其他针对web框架的MVC实现。

您在第一段中概述的理解基本上是正确的。我稍有不同的地方在于将模型、视图和控制器视为应用程序的独立层,因为您有对视图层的引用。是用于实现用户界面的模式,通常是应用程序中表示层的一部分。除了MVC之外,还有其他实现表示层的模式,如、等

SpringMVC构建在Spring框架之上。如果您熟悉Spring框架,您就会知道它是许多Java可用框架之一。SpringMVC控制器是常规的SpringManagedBean,可以由SpringDI容器发现,并且可以将其他SpringBean注入其中

SpringMVC应用程序中的模型对象可以是任何Java类的实例,无论是内置数据类型,如String、Long、BigInteger等,还是用户定义的类和枚举

视图也可以是对最终用户有意义的任何内容—HTML页面、XML文档、JSON文档、PDF文档、Excel电子表格等等。SpringMVC不提供任何现成的视图生成机制。但是,它可以集成几种现有的视图生成技术,如常规JSP、JSTL、模板引擎(如Freemarker、Java、Thymeleaf和StringTemplate)、报告框架(如Jasper Reports)、XML绑定框架(如JAXB和Castor)、JSON绑定框架(如Jackson和GSON)等。SpringMVCAPI相当容易与视图生成技术集成,因此该框架可以相对容易地适应新技术


因为SpringMVC是一个表示层框架,所以它没有指定、推荐或强制执行业务逻辑的实现方式。但是,通常最好将业务逻辑排除在表示层之外。有关详细信息,请参阅。例如,如果您希望为某些用户或业务合作伙伴提供对业务逻辑的编程访问,那么最好将业务逻辑放在单独的层中,web表示层将调用该层。然后,您可以创建一个薄层,该薄层还调用相同的业务逻辑层,并允许使用SOAP、REST、EDI等数据交换机制对外部用户进行编程访问。

您在第一段中概述的理解基本正确。我稍有不同的地方在于将模型、视图和控制器视为应用程序的独立层,因为您有对视图层的引用。是用于实现用户界面的模式,通常是应用程序中表示层的一部分。除了MVC之外,还有其他实现表示层的模式,如、等

SpringMVC构建在Spring框架之上。如果您熟悉Spring框架,您就会知道它是许多Java可用框架之一。SpringMVC控制器是常规的SpringManagedBean,可以由SpringDI容器发现,并且可以将其他SpringBean注入其中

SpringMVC应用程序中的模型对象可以是任何Java类的实例,无论是内置数据类型,如String、Long、BigInteger等,还是用户定义的类和枚举

视图也可以是对最终用户有意义的任何内容—HTML页面、XML文档、JSON文档、PDF文档、Excel电子表格等等。SpringMVC不提供任何现成的视图生成机制。但是,它可以集成几种现有的视图生成技术,如常规JSP、JSTL、模板引擎(如Freemarker、Java、Thymeleaf和StringTemplate)、报告框架(如Jasper Reports)、XML绑定框架(如JAXB和Castor)、JSON绑定框架(如Jackson和GSON)等。SpringMVCAPI相当容易与视图生成技术集成,因此该框架可以相对容易地适应新技术

从春季开始MVC i 它是一个表示层框架,不指定、建议或强制执行业务逻辑的实现方式。但是,通常最好将业务逻辑排除在表示层之外。有关详细信息,请参阅。例如,如果您希望为某些用户或业务合作伙伴提供对业务逻辑的编程访问,那么最好将业务逻辑放在单独的层中,web表示层将调用该层。然后,您可以创建一个薄层,该薄层还调用相同的业务逻辑层,并允许使用数据交换机制(如SOAP、REST、EDI等)对外部用户进行编程访问。

MVC是UI层

模型是对象的映射,表示视图的数据。这些对象通常是JPA实体,但不一定是。它可以是一个简单的类,在登录表单中表示用户名和密码

在模型类中保留一些逻辑。例如,如果要计算贷款的利率,可以在模型类中进行。对于复杂的逻辑,特别是当涉及多个模型类时,请使用服务

模型类必须完全独立于视图和控制器,因为它们可以在没有视图和控制器的情况下存在

控制器响应HTTP请求。通常,它负责加载正确的模型,选择正确的视图,并返回此信息。控制器应该相当愚蠢

你想要胖模特和瘦控制器。在模型中尽可能多地保留逻辑

视图是可以使用模型的JSP或模板,如Thymeleaf或Freemarker。诀窍是在视图中拥有尽可能少的逻辑。

MVC是UI层

模型是对象的映射,表示视图的数据。这些对象通常是JPA实体,但不一定是。它可以是一个简单的类,在登录表单中表示用户名和密码

在模型类中保留一些逻辑。例如,如果要计算贷款的利率,可以在模型类中进行。对于复杂的逻辑,特别是当涉及多个模型类时,请使用服务

模型类必须完全独立于视图和控制器,因为它们可以在没有视图和控制器的情况下存在

控制器响应HTTP请求。通常,它负责加载正确的模型,选择正确的视图,并返回此信息。控制器应该相当愚蠢

你想要胖模特和瘦控制器。在模型中尽可能多地保留逻辑


视图是可以使用模型的JSP或模板,如Thymeleaf或Freemarker。诀窍是在视图中尽可能少地使用逻辑。

好的、简洁的答案。你的解释很有道理。很好,简洁的回答。你解释的方式很有道理。