1. 개요

이 기사에서는 Spring MVC에서 제공 하는 핵심 org.springframework.ui.Model , org.springframework.ui.ModelMaporg.springframework.web.servlet.ModelAndView 의 사용법을 살펴 보겠습니다 .

2. Maven 의존성

pom.xml 파일 에서 spring-context 의존성으로 시작해 보겠습니다 .

<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-context</artifactId>
    <version>5.2.2.RELEASE</version>
</dependency>

스프링 컨텍스트 의존성의 최신 버전은 여기 에서 찾을 수 있습니다 .

의 경우 의 ModelAndView스프링 웹 의존성이 필요합니다 :

<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-web</artifactId>
    <version>5.2.2.RELEASE</version>
</dependency>

최신 버전의 spring-web 의존성은 여기 에서 찾을 수 있습니다 .

그리고 Thymeleaf를 뷰로 사용하는 경우이 의존성을 pom.xml에 추가해야합니다.

<dependency>
    <groupId>org.thymeleaf</groupId>
    <artifactId>thymeleaf-spring5</artifactId>
    <version>3.0.11.RELEASE</version>
</dependency>

최신 버전의 Thymeleaf 의존성은 여기 에서 찾을 수 있습니다 .

3. 모델

여기서 가장 기본적인 개념 인 모델 부터 시작하겠습니다 .

간단히 말해, 모델은 뷰 렌더링에 사용되는 속성을 제공 할 수 있습니다.

사용 가능한 데이터가있는 뷰를 제공하기 위해이 데이터를 Model 개체에 추가하기 만하면 됩니다. 또한 속성이있는 맵은 모델 인스턴스 와 병합 될 수 있습니다 .

@GetMapping("/showViewPage")
public String passParametersWithModel(Model model) {
    Map<String, String> map = new HashMap<>();
    map.put("spring", "mvc");
    model.addAttribute("message", "Baeldung");
    model.mergeAttributes(map);
    return "viewPage";
}

4. 모델

Model 인터페이스 와 마찬가지로 ModelMap 은 뷰를 렌더링하기 위해 값을 전달하는데도 사용됩니다.

ModelMap 의 장점은 값 모음을 전달하고 이러한 값을 Map 내에있는 것처럼 처리 할 수 ​​있다는 것입니다 .

@GetMapping("/printViewPage")
public String passParametersWithModelMap(ModelMap map) {
    map.addAttribute("welcomeMessage", "welcome");
    map.addAttribute("message", "Baeldung");
    return "viewPage";
}

5. ModelAndView

값을 뷰에 전달하는 마지막 인터페이스는 ModelAndView 입니다.

이 인터페이스를 사용하면 Spring MVC에서 요구하는 모든 정보를 한 번에 전달할 수 있습니다.

@GetMapping("/goToViewPage")
public ModelAndView passParametersWithModelAndView() {
    ModelAndView modelAndView = new ModelAndView("viewPage");
    modelAndView.addObject("message", "Baeldung");
    return modelAndView;
}

6.보기

이러한 모델에 배치 된 모든 데이터는보기 (일반적으로 웹 페이지를 렌더링하는 템플릿보기)에서 사용됩니다.

컨트롤러의 메서드가 대상으로하는 Thymeleaf 템플릿 파일이 뷰로있는 경우. 모델을 통해 전달 된 매개 변수는 thymeleaf HTML 코드 내에서 액세스 할 수 있습니다.

<!DOCTYPE HTML>
<html xmlns:th="http://www.thymeleaf.org">
<head>
    <title>Title</title>
</head>
<body>
    <div>Web Application. Passed parameter : th:text="${message}"</div>
</body>
</html>

여기에 전달 된 매개 변수 는 자리 표시 자라고하는 $ {message} 구문을 통해 사용됩니다 . Thymeleaf 템플릿 엔진은이 자리 표시자를 모델을 통해 전달 된 동일한 이름의 속성의 실제 값으로 대체합니다.

7. 결론

이 빠른 예제에서 우리는 Spring MVC의 세 가지 핵심 개념 인 Model , ModelMapModelAndView를 논의했습니다 . 또한 뷰에서 이러한 값을 사용할 수있는 방법에 대한 예를 살펴 보았습니다.

항상 그렇듯이 이러한 모든 예제 및 코드 스 니펫의 구현은 Github 에서 찾을 수 있습니다 .