Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
31 |
Tags
- java
- spring security
- Volatile
- Google OAuth
- 일급 컬렉션
- factory
- OAuth 2.0
- Dependency Injection
- builder
- synchronized
- 일급 객체
- nestjs
- middleware
- Spring
- lombok
Archives
- Today
- Total
HJW's IT Blog
[SPRING BOOT] MVC Pattern 본문
MVC Pattern 이란?
Model View Controller 패턴이다. 어플리케이션의 데이터(Model) , 사용자 인터페이스 (View) , 제어로직 (Controller) 를 분리하여 개발하는 아키텍처 패턴이다.
Model : 데이터와 비즈니스 로직을 처리하는 계층으로, 데이터베이스와 상호작용하며, 데이터를 가공하고 조작한다. Model 은 View 혹은 Controller 에 대한 정보를 가지고 있지 않다
View : 사용자에게 표기되는 UI 계층으로, Model 의 데이터를 가져와 사용자에게 보여준다.
Controller : 사용자의 입력을 받아 Model 과 View 를 제어하는 계층으로, 사용자의 요청을 처리한다.
Model
어플리케이션의 정보, 데이터 등을 나타내는데, 다음과 같은 규칙을 가진다
- 사용자가 편집하길 원하는 모든 데이터를 가지고 있어야 한다
- View 혹은 Controller에 대한 어떤 정보도 알지 말아야 한다
- 변경이 일어나면, 변경 통지에 대한 처리 방법을 구현해야 한다.
View
input text, checkbox 등 사용자 인터페이스 요소를 나타낸다. 다음과 같은 규칙을 가진다
- 모델의 정보를 따로 저장해서는 안된다
- 모델이나 컨트롤러와 같이 다른 구성 요소들을 몰라야 된다
- 변경이 일어나면 변경 통지에 대한 처리방법을 구현해야만 한다
Controller
데이터와 사용자 인터페이스 요소들을 잇는 다리 역할을 한다. 다음과 같은 규칙을 가진다.
- Model이나 View 에 대해 알고 있어야 한다
- Model 과 View 의 변경을 모니터링 해야 한다.
@Controller 어노테이션은 스프링 컨테이너에 해당 클래스가 컨트롤러 역할을 한다는 것을 알린다.
@Controller
public class HelloController {
@GetMapping("hello")
public String hello(Model model){
model.addAttribute("data", "Hello!!");
return "hello";
}
}
- @Controller 어노테이션으로 해당 클래스를 스프링 컨테이너에 등록 해준다
- 이후, 클라이언트에서 url/hello 를 호출했을 경우 @GetMapping(”hello”)를 찾는다 (GET 요청)
- 이때 Model 은 controller 와 view 사이에 데이터를 전달하는 역할을 한다
- return “hello” → resource/templates/hello.html 을 반환
<!DOCTYPE HTML>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<title>Hello</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
</head>
<body>
<p th:text="'안녕하세요. ' + ${data}" >안녕하세요. 손님</p>
</body>
</html>
- 해당 페이지의 ${data} 는 컨트롤러를 통해 “Hello!!” 반환
'SPRING' 카테고리의 다른 글
Spring Bean 과 의존관계 설정 두가지 방법 (0) | 2024.11.25 |
---|---|
Spring 웹 개발 기초 (1) | 2024.11.25 |
IoC Container 과 Bean에 대한 정리 (0) | 2024.11.25 |
서블릿과 Spring DispatcherServlet: 웹 애플리케이션의 핵심 이해하기 (1) | 2024.11.18 |
[SPRING BOOT] IOC, DC, BEAN 에 대해 (0) | 2024.05.28 |