[BE/Spring] ModelAndView와 ModelMap의 차이

    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
    반응형

    댓글