[BE/Spring] ModelAndView와 ModelMap의 차이

2021. 3. 18. 09:30
728x90

2021.03.18

8일차

 

입사 11일차.

@Controller와 연결된 주소로 페이지가 넘어갈 때, DB에서 SELECT한 데이터를 화면에 표시하는 방법으로

ModelAndView를 사용했었다.

 

그런데, 지금 진행하고 있는 프로젝트는 ModelAndView를 쓰지 않고, ModelMap와 리턴타입을 String으로 메소드를 작성해서 동적데이터를 처리하고 있었다.

 

왜 ModelMap을 써서 굳이 리턴타입을 String으로 작성한 이유가 궁금해져서 찾아봤다,

 

 

1. ModelAndView

  ① ModelAndView mav = new ModelAndView(); 로 선언한다.

  ② View로 데이터를 전달하기 위해, HashMap과 같은 형식( Key-Value )으로 addObject( Key, Value )라는 메소드를 사

      용한다.

  ③ setViewName(); 이라는 메소드를 사용해서 원하는 페이지( html or jsp )와 연결시켜 준다.

  ④ 리턴타입이 ModelAndView이다.

  ⑤ View에서 데이터를 표시할때는 ${Key}와 같이 작성하면 @Controller에서 Key로 저장한 Value값이 출력된다.

      ${Key}를 프로퍼티라고 기억하고 있었는데 검색결과에 나오지 않는걸 보니 제대로 아는 내용이 아니었나보다.

 

 

2. ModelMap

  ① Map<String, Object> map = new ModelMap(); 으로 선언한다. 굳이 Map으로 선언하는 이유(링크)

  ② View로 데이터를 전달하기 위해, addAttribute( Key, Value )라는 메소드를 사용한다.

  ③ 원하는 페이지의 실제경로는 return에 적어준다 >> 따라서, 리턴타입은 String이 되는 것이다.

  ④ View에서의 표시방법은 같다.

 

 

3. 차이점?

  ▶ 아래의 출처와 Spring Framework 공식페이지에서 찾은 설명에 따르면 2가지 방법의 성능차이는 없다고 한다. 코드를 작성하는 스타일에 따라 사용방법이 다른 것이고, Spring Framework 버전에 따라 추가된 시점이 다르다고 한다. 개인적으로는 ModelAndView가 더 편하고 좋은 것 같다.

 

출처

Baeldung.com

www.baeldung.com/spring-mvc-model-model-map-model-view

728x90

BELATED ARTICLES

more