java, spring

[Spring Boot | Thymeleaf] Model, ModelAndView와 타임리프(Thymeleaf)

isaac.kim 2023. 2. 8. 23:24
728x90
반응형

[Spring Boot | Thymeleaf] Model, ModelAndView와 타임리프(Thymeleaf)

 

이전 글

2023.02.06 - [Java & Spring/Spring Boot] - [Spring Boot | Thymeleaf] 타임리프 사용방법 및 시작하기

 

[Spring Boot | Thymeleaf] 타임리프 사용방법 및 시작하기

[Spring Boot | Thymeleaf] 타임리프 사용방법 및 시작하기 Spring, Spring Boot 프로젝트를 구성하면서 React, Vue 등의 FE 프레임워크를 사용하지 않는다면, Web 기본 기술 html, css, javascript과 JSP, Thymeleaf와 같은

lifere.tistory.com

 

이전 글에서 타임리프 사용방법에 대해서 알아보았습니다.

 

이전 글 예시에서는 Model로 데이터를 넘기는 방법에 대해서 알아보았는데요. 이번에는 Spring MVC에서 사용되는 ModelAndView 객체를 이용해서 Model과 View를 함께 세팅하여 넘기는 방법에 대해 알아보겠습니다.

 

View페이지는 타임리프(Thymeleaf)를 사용합니다.

 

 

반응형

 

 

지난 번 글에선 Controller에서 Model을 사용한 방법은 알아보았었는데요.

다음 코드 예시에서 ModelAndView를 사용해서 데이터를 넘기는 방식도 사용되었으니 아래 코드를 살펴보겠습니다.

Controller에서 가장 아래에 있는 메서드 modelAndViewTest 메서드가 ModelAndView를 사용한 방식이 됩니다.

Model에 데이터를 담아 보낼 때와 조금은 다른 것을 확인할 수 있습니다.

 

Model을 사용한 방식과 ModelAndView를 사용한 방식의 차이점을 보겠습니다.

 

Model을 사용한 경우

@RequestMapping("/data-test")
public String dataTest(Model model) {
    model.addAttribute("data1", "대한민국");
    return "data-test";
}

 

ModelAndView를 사용한 경우

@RequestMapping("/mv-test")
public ModelAndView modelAndViewTest(ModelAndView modelAndView) { // Model(Data) + View 지정
    modelAndView.addObject("name", "이순신");
    modelAndView.addObject("age", 29);
    modelAndView.setViewName("mv-test");
    return modelAndView;
}

 

차이점

1. 메서드의 파라미터가 다릅니다.

Model을 사용하는 경우 메서드의 파라미터 Model 을 선언하였고,

ModelAndView를 사용하는 경우 메서드의 파라미터 ModelAndView 를 선언하였습니다.

 

2. 반환값이 다릅니다.

Model을 사용한 방식에서는 String으로 반환합니다.

ModelAndView를 사용한 방식에서는 ModelAndView 를 반환합니다.

 

3. 데이터 전달 방식, 사용되는 메서드가 다릅니다.

Model을 사용하는 방식에서는 데이터를 model.addAttribute("key", "value") 로 데이터를 세팅합니다.

ModelAndView를 사용하는 방식에서는 modelAndView.addObject("key","value")로 데이터를 세팅하고,

View페이지를 modelAndView.setViewName("View-name")으로 세팅하여 ModelAndView 객체를 반환합니다.

 

 

아래 이미지는 위 예시에서 ModelAndView에 세팅된 mv-test.html 소스 입니다. 

 

mv-test.html

 

ViewName으로 세팅된 mv-test.html 파일의 호출과,

 

name으로 세팅된 값 "이순신", age로 세팅된 값 29 모두 잘 출력되고 있는 것을 확인할 수 있습니다.

 

아래는 Controller에서 ModelAndView를 세팅했던 메서드입니다.

 

 


도움이 되는 글 작성하겠습니다!

좋아요, 구독, 광고 클릭은 큰 힘이 됩니다 :)

 

728x90
반응형