@ModelAttribute 어노테이션
기능 1. @ModelAttribute("이름") 어노테이션을 사용 해서 테스트 하기.
Controller 와 View 간에서
Controller가 @ModelAttribute("이름") 어노테이션을 사용 해서 테스트 해볼수 있다.
C와 V 에서 데이터가 오고가고 잘 되는지를 Controller가 확인 하고 싶을 때,
@ModelAttribute("이름") 어노테이션을 사용해서, 객체를 View 에게 넘겨준다.
코드를 확인해보자.

@ModelAttribute 를 Command 객체에 직접 넣어준다.
이것은 MemberVO 객체에 mVO를 mem 으로 보내주는 것을 의미한다.
그래서 View 에서는

객체의 이름을 mem 의 mid, mem의 mpw 라고 표현한다.
원래

값을 직접 밀어넣어주는 방식으로 사용 하는게 올바르지만 Controller 바로 확인 하고 싶을때 이런 방법도 사용할 수 있다 라고 이해할 수 있다.
TMI (정보) , Command 객체는 별도의 설정없이 바로 View 에서 EL 표현식으로 사용이 가능하다.
단, 클래스 타입을 소문자로 시작 해야 사용 할 수 있다.
그런데 거의 사용하지 않는 방식이라서 이런 기능이 있다는 것만 알아두기로 하자.

기능 2. view에서 사용할 데이터를 세팅 목적으로 사용된다.
@ModelAttribute 는 기능 1 보다 기능 2가 더 많이 사용된다.
view에서 사용할 데이터를 세팅하려는 목적으로 활용하는 @ 어노테이션 으로
@을 사용함으로써 view 에서 지정한 "특정이름" 을 쓸 수 있게 된다.
@Controller 파트에서 @ModelAttribute 를 사용하면, @RequestMapping보다 먼저 수행되기 때문에
보편적으로 메서드 위에 쓰는게 훨씬 많다.

사용자가 최초로 main.do 요청을 하면,
@RequestMapping이 사용자의 요청을 매핑 하고,
그때 딱 한번만 @ModelAttribute("searchMap") 를 한다.
즉, 최초 한번만 searchMap 이라는 파라미터명으로 객체화 하기 때문에,
싱글톤 패턴 개념이라고 볼 수 있다.

프레임워크 Map 을 사용하는데 키와 값이 String 타입이고 HashMap 인스턴스의 변수 map 에다가
데이터를 넣어주고 map을 반환 할거야 !
View 로 이동하면 ,


@ 어노테이션을 설정하는 방법 과

데이터를 세팅 해서 보내주는 방식이

사실 서로 동일하다.
가독성 등의 측면에서 고려한다면 어노테이션 방식보다 직접 데이터를 addAttribute() 해서 보내는 코드를 작성하는 것이 더 좋을 수 있다.