Model model의 역할

서성관·2024년 6월 17일

Spring

목록 보기
1/1

Model model이 의미 하는것은?

Model 객체는 Spring MVC에서 컨트롤러와 뷰 사이의 데이터를 전달하기 위해 사용됩니다.
컨트롤러에서 생성된 데이터를 뷰(예: JSP, Thymeleaf)로 전달하여 렌더링할 때 사용됩니다.
Model은 데이터를 키-값 쌍으로 저장하고, 이를 뷰에서 접근할 수 있도록 합니다.

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;

@Controller
public class BasicController {

    @GetMapping("/")
    public String hello(Model model) {
        // 데이터 추가
        model.addAttribute("message", "Hello, Spring Boot with Thymeleaf!");

        // 뷰 이름 반환
        return "index"; // src/main/resources/templates/index.html
    }
}
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
    <title>Spring Boot Example</title>
</head>
<body>
    <h1 th:text="${message}"></h1>
</body>
</html>

Model 객체의 주요 기능
데이터 추가:
Model 객체를 사용하여 데이터를 추가할 수 있습니다. 예를 들어, model.addAttribute("key", value)를 사용하여 데이터를 추가합니다.

뷰에서 데이터 접근:
뷰 템플릿에서 ${key}와 같은 표현식을 사용하여 Model 객체에 추가된 데이터에 접근할 수 있습니다.

예제 설명
위의 예제에서:

  1. hello 메소드가 호출되면, Model 객체에 "message"라는 키로 "Hello, Spring Boot with Thymeleaf!" 값을 추가합니다.

  2. 컨트롤러는 index라는 뷰 이름을 반환합니다. Spring Boot는 src/main/resources/templates/index.html 파일을 찾아 렌더링합니다.

  3. 뷰 템플릿에서 ${message} 표현식을 사용하여 Model 객체에 추가된 메시지에 접근하고 이를 HTML로 출력합니다.

이렇게 Model 객체를 사용하면, 컨트롤러와 뷰 사이에서 데이터를 효율적으로 전달하고 표시할 수 있습니다.

주요 메소드
addAttribute(String attributeName, Object attributeValue):
특정 이름과 값을 가진 속성을 모델에 추가합니다.

addAllAttributes(Collection<?> attributeValues):
컬렉션에 포함된 모든 객체를 모델에 추가합니다.
객체의 속성 이름은 객체의 클래스 이름을 소문자로 바꾼 것입니다.

addAllAttributes(Map<String, ?> attributes):
주어진 맵에 있는 모든 항목을 모델에 추가합니다.

mergeAttributes(Map<String, ?> attributes):
주어진 맵에 있는 항목을 모델에 추가합니다.
모델에 동일한 이름의 속성이 있는 경우, 이를 덮어쓰지 않습니다.

containsAttribute(String attributeName): 모델에 주어진 이름의 속성이 포함되어 있는지 여부를 확인합니다.

profile
개발 일지

0개의 댓글