我了解MVC Pattern以及Spring MVC如何实现它。
但是,Rest controller
、Data Access Layer
和Service Layer
如何适应这种模式呢?
是不是:
*型号=数据库(例如Oracle/MySQL)和Repositories类
*控制器= Service
(业务逻辑)和剩余Controller
类
*视图= JSP
/FreeMarker
?
我了解MVC Pattern以及Spring MVC如何实现它。
但是,Rest controller
、Data Access Layer
和Service Layer
如何适应这种模式呢?
是不是:
*型号=数据库(例如Oracle/MySQL)和Repositories类
*控制器= Service
(业务逻辑)和剩余Controller
类
*视图= JSP
/FreeMarker
?
3条答案
按热度按时间eh57zj3b1#
模型-不是数据库,不是存储库,也不是实体。模型是抽象,包含需要显示的所有数据。每个
View
都有自己的模型。您可以将Model
视为Controller
和View
之间的 * 数据容器 *。Spring模型中的参数为控制器方法的
ModelMap
。控制器-准备
Model
,将其传递给View
。如果模型非常简单,Controller
可以自己完成。但大多数模型包含大量数据,可能是来自数据库的多个实体、来自配置的数据等。在这种情况下,控制器使用较低级别的层:
Service
、Repository
,它们都帮助Сontroller
为View
建立模型。upd:
Controller
的目的是连接View
和Model
。Controller
创建并填充Model
,然后选择View
并将此创建的Model
传递给View
。* 这就是模型和视图如何获得连接 *。在Spring中,控制器为
Controller
和RestController
。视图-是最终点,来自
Model
的数据(由Controller
传递)将显示给用户。但View
的另一个角色是从用户获取命令,并将其传递给Controller
。在Spring中,这可能是任何视图引擎的视图:一米二十六分一秒,一米二十七分一秒,一米二十八分一秒。
注意:通常情况下,
Controller
并不直接使用Repository
,传统上Controller
与Service
配合使用,Service
使用Repository
从数据库中获取数据,关系如下:x1米35英寸1x〈-x1米36英寸1x-〉x1米37英寸1x-〉x1米38英寸1xzphenhs42#
控制器接受HTTP请求,通常加载或保存一些数据(来自服务或DAO),并返回HTTP响应,该响应可以是重定向、视图、JSON或二进制文件。
控制器可以使用服务,但是应该避免自己有太多的逻辑,如果不需要服务逻辑,它也可以直接使用数据访问对象。
模型是视图完成其工作所需的任何信息。它不一定与数据库相关。例如,您可能在注册表单中有一个模型,具有电子邮件地址和confirmEmailAddress字段。您没有在数据库中存储confirmEmailAddress字段,因此数据库表和模型之间没有一对一的关系。此外,您的模型可能是用于简单计算的数据,但不会持久化。
mum43rcc3#
所以让我确认一下...
用户与接口交互以查看或提交数据。用户调用接口以查看某些数据。该调用(HTTP请求)将转到Dispatcher Servlet(DS)。
然后DS查询处理程序Map以帮助它决定使用哪个Controller。
选择后,DS将请求传递到Controller,Controller将根据GET或POST调用相应的服务方法。服务方法可能需要与Repository交互,Repository可以与非易失性存储(数据库、XML文件、文本文件等)交互,以根据定义的业务逻辑构造模型。完成后,模型数据将返回到DS。
然后DS咨询视图解析器,确定应该使用哪个视图。视图解析器为请求选择一个定义的视图。
然后,DS将请求转发到视图上,视图将呈现给用户。