我需要创建一个使用原理和MySQL数据库的简单项目.我想使用Spring和Spring和。
我想让GET、POST、PUT和DELETE请求调用数据库并向客户端发送一个JSON。
@GetMapping(value = "/users")
public Users getUsers() {
// call the service -> call the database
}
对此的反应是:
{
"name": "John",
"age": 45,
...
}
这个项目使用MVC原则吗?还是需要使用.jsp
来实现视图的完整MVC原则?
所以控制器是REST控制器,模型是用户POJO。如果这个项目使用MVC原理,有人能解释一下视图在哪里吗?
如果服务调用存储库并从MySQL
数据库获取数据,我想知道是通过添加DAO来修改MVC,还是DAO是模型的一部分?
发布于 2022-04-30 15:51:38
MVC是应用程序层的体系结构设计模式。它正是关于您的应用程序的内部工作。
REST是您的应用程序如何与其他应用程序交互的。
您可以在一个应用程序中将它们组合在一起。
一般来说,对于不同的问题,它们是不同的模式:
MVC --您正在接收请求->处理它(从DB获取数据或以某些方式获取数据),->将其呈现给视图->,并将请求的数据返回给调用方。
(Representational REST State Transfer(Ransfer)流非常相似。但是,您的应用程序没有使用数据->返回视图,而是只发送数据的表示。响应的内容类型应由调用方根据请求指定。
现在一个接一个地回答你的问题。(也许,只要一个问题就能正确地回答它们,问题就太多了)
Does this project use the MVC principle? Or do I need to use a .jsp file for the view to have a complete MVC principle?
从您已经共享的片段(您使用了REST )中,您的方法返回资源的JSON表示。
现在看来,这是您想要实现的理想目标:
And I want to make GET, POST, PUT and DELETE requests that call the database and send a JSON to the client.
如果您想使用MVC,则必须返回带有获取数据的呈现视图。请记住,在这种情况下,必须将HTML页面返回给调用方:
@Controller
@RequiredArgsConstructor
public class ControllerDemo {
private final UserService userService;
@GetMapping(value = "/users")
public String getAllUsers(Model model) {
// add fetched data to model as attribute
model.addAtribute("users", userService.findAll());
// view resolver should be configured to render response to `response-page.ftl` for example
return "response-page";
}
使用JSP、共济会或八字胡等并不重要--主要思想是创建模板,并根据HTML页面上的模板表示来自DB的数据。
So the Controller is the REST Controller and the Model is the Users pojo. And if this project use the MVC principle can somebody explain where is the view?
-使用REST方法不是视图,这种情况下的响应是资源的表示。
And if the service calls the repository and fetch the data from the MySQL database I want to know if the MVC is modified by adding the DAO, or the DAO is a part of the Model?
DAO代表数据访问层。您有一个模型- User
类来描述您的实体.然后在DB中存储一些用户实体。您希望接收已经存储的所有用户(在现实生活中,您需要分页,但为了简单起见,我们省略了它)。
因此,要做到这一点,您必须逐行为您的users
表,并将该行从DB转换为User
实体。然后将此检索用于分离数据层-- DAO
。
DAO不是Model的一部分,它是Model和DB之间的独立层。
您不能在您的服务层(UserService
)上这样做,因为它会阻止服务层的简单责任原则 (固体原理) --完成一项工作并做好它。
同时,您支持为应用程序的某些部分提供高内聚力(把握原则 )。
发布于 2022-05-02 04:16:57
MVC是实现UI的模式。因此,如果您只是在开发REST,则不涉及UI,因此不需要考虑它是否作为MVC实现。
相反,如果您正在开发web应用程序,视图就是将HTML代码呈现给浏览器的技术。通常,它们只是一个模板引擎,如JSP、FreeMarker或Thymeleaf,它允许您使用它们的表达式语言访问某些Java对象(即Model
)中的数据,以定义要作为模板生成的HTML代码。
在Spring中,您需要使用@RestController
来开发REST,而@Controller
用于web应用程序。主要的区别是@RestController
包含@ResponseBody
,因为REST中没有视图,它将通过视图解析过程传递。
简而言之,当您正在开发REST时,没有UI,也没有视图。因此,MVC在这里不适用,您不需要担心它是否是基于MVC实现的。
如果服务调用存储库并从MySQL数据库获取数据,我想知道是通过添加DAO来修改MVC,还是DAO是模型的一部分?
DAO是一个负责从DB获取和管理数据的对象。这和模特儿无关。
https://stackoverflow.com/questions/71815901
复制相似问题