상세 컨텐츠

본문 제목

ModelAndView란?

Spring Framework

by Wanderer Kim 2025. 5. 17. 23:39

본문

반응형

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에 담긴 모델 데이터를 받아 렌더링을 수행한다.
  • 최종적으로 클라이언트에게 뷰가 응답된다.
728x90

'Spring Framework' 카테고리의 다른 글

DispatcherServlet이란?  (2) 2025.05.20
Spring MVC 구조  (0) 2025.05.20
Servlet forward와 include의 차이점  (0) 2025.05.01
BeanFactory와 ApplicationContext의 차이점  (0) 2025.02.16
Bean Lifecycle  (0) 2024.08.18

관련글 더보기

댓글 영역