Spring MVC如何与Web应用程序中的服务,控制器和数据访问层相关联?

jav*_*999 8 java model-view-controller service spring spring-mvc

我理解MVC模式以及Spring MVC如何实现它.

然而,怎么做Rest controller,Data Access LayerService Layer适合这种模式?

是吗:

  • Model = Database(例如Oracle/MySQL)和Repositories

  • Controller = Service(商务逻辑)和休息Controller

  • 查看 = JSP/ FreeMarker

Ken*_*kov 17

模型 - 不是数据库,不是存储库,不是实体.模型是抽象,包含需要显示的所有数据.每个人都View拥有自己的模特.你可以考虑Model作为数据容器之间的ControllerView.

Spring模型是ModelMap控制器方法的参数.

控制器 - 准备Model,传递给View.如果模型非常简单,Controller可以单独完成.

但是大多数模型都包含大量数据.这可以是来自数据库的多个实体,来自配置的数据等.在这种情况下,Controller使用较低级别的层:Service, Repository. 他们都帮助?ontroller建立模型View.

upd:这是Controller连接View和的目的Model.Controller创建并填充Model,然后选择View并将此创建传递ModelView.这就是Model和View获得连接的方式.

在Spring中,控制器是ControllerRestController.

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

在Spring中,这可能是任意视图引擎的:JSP,Freemaker,Thymeleaf.


注意:通常,ControllerRepository直接使用.传统上,Controller使用ServiceService用于Repository从数据库获取数据.关系如下:View< - Controller- > Service- >Repository


Nei*_*gan 5

控制器接受 HTTP 请求并经常加载或保存一些数据(来自服务或 DAO),并返回 HTTP 响应。此响应可以是重定向、视图、某些 JSON 或二进制文件。

控制器可以使用服务,但应避免拥有太多自己的逻辑。如果不需要服务逻辑,它也可以直接使用数据访问对象。

模型是视图完成其工作所需的任何信息。它不一定与数据库相关。例如,您可以在注册表单中有一个模型,其中包含电子邮件地址和确认电子邮件地址字段。您不会在数据库中存储 confirmEmailAddress 字段,因此它们在数据库表和模型之间没有一对一的关系。此外,您的模型可能是用于不持久化的简单计算的数据。

  • 模型只是对象的映射。这些对象可能是也可能不是实体。如果您使用的是 Spring Data,那么是的,您可能会向模型添加实体列表,但您也可以添加其他内容,例如下拉列表的数据,所有这些都在同一模型中。 (2认同)