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 객체에 추가된 데이터에 접근할 수 있습니다.
예제 설명
위의 예제에서:
hello 메소드가 호출되면, Model 객체에 "message"라는 키로 "Hello, Spring Boot with Thymeleaf!" 값을 추가합니다.
컨트롤러는 index라는 뷰 이름을 반환합니다. Spring Boot는 src/main/resources/templates/index.html 파일을 찾아 렌더링합니다.
뷰 템플릿에서 ${message} 표현식을 사용하여 Model 객체에 추가된 메시지에 접근하고 이를 HTML로 출력합니다.
이렇게 Model 객체를 사용하면, 컨트롤러와 뷰 사이에서 데이터를 효율적으로 전달하고 표시할 수 있습니다.
주요 메소드
addAttribute(String attributeName, Object attributeValue):
특정 이름과 값을 가진 속성을 모델에 추가합니다.
addAllAttributes(Collection<?> attributeValues):
컬렉션에 포함된 모든 객체를 모델에 추가합니다.
객체의 속성 이름은 객체의 클래스 이름을 소문자로 바꾼 것입니다.
addAllAttributes(Map<String, ?> attributes):
주어진 맵에 있는 모든 항목을 모델에 추가합니다.
mergeAttributes(Map<String, ?> attributes):
주어진 맵에 있는 항목을 모델에 추가합니다.
모델에 동일한 이름의 속성이 있는 경우, 이를 덮어쓰지 않습니다.
containsAttribute(String attributeName): 모델에 주어진 이름의 속성이 포함되어 있는지 여부를 확인합니다.