java SpringMVC与Web应用程序中的服务层、控制器层和数据访问层有什么关系?

mccptt67  于 2023-01-19  发布在  Java
关注(0)|答案(3)|浏览(90)

我了解MVC Pattern以及Spring MVC如何实现它。
但是,Rest controllerData Access LayerService Layer如何适应这种模式呢?
是不是:

*型号=数据库(例如Oracle/MySQL)和Repositories
*控制器= Service(业务逻辑)和剩余Controller
*视图= JSP/FreeMarker

eh57zj3b

eh57zj3b1#

模型-不是数据库,不是存储库,也不是实体。模型是抽象,包含需要显示的所有数据。每个View都有自己的模型。您可以将Model视为ControllerView之间的 * 数据容器 *。

Spring模型中的参数为控制器方法的ModelMap

控制器-准备Model,将其传递给View。如果模型非常简单,Controller可以自己完成。

但大多数模型包含大量数据,可能是来自数据库的多个实体、来自配置的数据等。在这种情况下,控制器使用较低级别的层:ServiceRepository,它们都帮助СontrollerView建立模型。

upd:Controller的目的是连接ViewModelController创建并填充Model,然后选择View并将此创建的Model传递给View。* 这就是模型和视图如何获得连接 *。

在Spring中,控制器为ControllerRestController

视图-是最终点,来自Model的数据(由Controller传递)将显示给用户。但View的另一个角色是从用户获取命令,并将其传递给Controller

在Spring中,这可能是任何视图引擎的视图:一米二十六分一秒,一米二十七分一秒,一米二十八分一秒。
注意:通常情况下,Controller并不直接使用Repository,传统上ControllerService配合使用,Service使用Repository从数据库中获取数据,关系如下:x1米35英寸1x〈-x1米36英寸1x-〉x1米37英寸1x-〉x1米38英寸1x

zphenhs4

zphenhs42#

控制器接受HTTP请求,通常加载或保存一些数据(来自服务或DAO),并返回HTTP响应,该响应可以是重定向、视图、JSON或二进制文件。
控制器可以使用服务,但是应该避免自己有太多的逻辑,如果不需要服务逻辑,它也可以直接使用数据访问对象。
模型是视图完成其工作所需的任何信息。它不一定与数据库相关。例如,您可能在注册表单中有一个模型,具有电子邮件地址和confirmEmailAddress字段。您没有在数据库中存储confirmEmailAddress字段,因此数据库表和模型之间没有一对一的关系。此外,您的模型可能是用于简单计算的数据,但不会持久化。

mum43rcc

mum43rcc3#

所以让我确认一下...
用户与接口交互以查看或提交数据。用户调用接口以查看某些数据。该调用(HTTP请求)将转到Dispatcher Servlet(DS)。
然后DS查询处理程序Map以帮助它决定使用哪个Controller。
选择后,DS将请求传递到Controller,Controller将根据GET或POST调用相应的服务方法。服务方法可能需要与Repository交互,Repository可以与非易失性存储(数据库、XML文件、文本文件等)交互,以根据定义的业务逻辑构造模型。完成后,模型数据将返回到DS。
然后DS咨询视图解析器,确定应该使用哪个视图。视图解析器为请求选择一个定义的视图。
然后,DS将请求转发到视图上,视图将呈现给用户。

相关问题