[Spring Boot | Thymeleaf] Model, ModelAndView와 타임리프(Thymeleaf)
이전 글
2023.02.06 - [Java & Spring/Spring Boot] - [Spring Boot | Thymeleaf] 타임리프 사용방법 및 시작하기
이전 글에서 타임리프 사용방법에 대해서 알아보았습니다.
이전 글 예시에서는 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를 세팅했던 메서드입니다.
도움이 되는 글 작성하겠습니다!
좋아요, 구독, 광고 클릭은 큰 힘이 됩니다 :)
'java, spring' 카테고리의 다른 글
[Spring Boot | Thymeleaf] @PathVariable url 경로의 값을 변수로 받기 (0) | 2023.02.10 |
---|---|
[Spring Boot | Thymeleaf] 타임리프 th:utext="" (0) | 2023.02.08 |
[Spring Boot | Thymeleaf] 타임리프 사용방법 및 시작하기 (4) | 2023.02.06 |
[Java] 스트림(Stream), 람다(Lambda), 메서드 참조 Study 1 (0) | 2022.12.31 |
JAVA 입력받기 BufferedReader, Scanner (console) (0) | 2022.06.22 |