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
'백엔드 > 스프링' 카테고리의 다른 글
[Spring] HTTP 응답상태코드 정리 (Error 정리) (0) | 2021.07.02 |
---|---|
[BE/Spring] @Repository 와 @Mapper 비교하기 (5) | 2021.03.12 |
댓글