Spring Framework
ModelAndView란?
Wanderer Kim
2025. 5. 17. 23:39
728x90
Spring MVC에서 ModelAndView는 컨트롤러가 뷰에 데이터를 전달하고, 동시에 어떤 뷰를 사용할지 지정할 수 있느 ㄴ개체입니다. 즉, 모델 데이터와 뷰 이름을 함께 관리하는 편리한 클래스이다. 아래 코드는 ModelAndView 클래스의 정의 부분이다.
public class ModelAndView {
/** View instance or view name String. */
@Nullable
private Object view;
/** Model Map. */
@Nullable
private ModelMap model;
/** Optional HTTP status for the response. */
@Nullable
private HttpStatusCode status;
/** Indicates whether this instance has been cleared with a call to {@link #clear()}. */
private boolean cleared = false;
}
ModelAndView 주요 특징
- 모델과 뷰를 한 번에 처리: ModelAndView 객체를 생성하고, 여기에 데이터를 담고 뷰 이름을 설정한 후 컨트롤러 메서드에서 반환하면, spring MVC가 이를 사용해 뷰를 렌더링한다.
- 데이터 추가 방법: addObject(key, value) 메서드를 통해 뷰에 전달할 데이터를 추가한다.
- 뷰 이름 지정: setViewName() 메서드로 렌더링할 뷰의 이름을 지정한다.
- 컨트롤러 반환 타입: 컨트롤러 메서드의 반환 타입으로 ModelAndView를 사용한다.
예제 코드
@GetMapping("/goToViewPage")
public ModelAndView passParametersWithModelAndView() {
ModelAndView modelAndView = new ModelAndView("view/viewPage"); // 뷰 이름 지정
modelAndView.addObject("message", "Baeldung"); // 데이터 추가
return modelAndView; // 반환
}
@RequestMapping("/test2")
public ModelAndView test2() {
ModelAndView mav = new ModelAndView();
mav.addObject("msg", "hello");
mav.addObject("person", new Person("amy", 10));
mav.setViewName("view2");
return mav;
}
동작 원리
- 컨트롤러에서 ModelAndView를 반환하면, 스프링의 ViewResolver가 설정된 뷰 이름에 맞는 뷰를 찾는다.
- 찾은 뷰는 ModelAndView에 담긴 모델 데이터를 받아 렌더링을 수행한다.
- 최종적으로 클라이언트에게 뷰가 응답된다.
반응형