인프런 커뮤니티 질문&답변

ㅇㅇㅇㅇㅇㅇ님의 프로필 이미지
ㅇㅇㅇㅇㅇㅇ

작성한 질문수

스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술

유연한 컨트롤러2 - v5

process(paramMap,model) 질문

작성

·

337

0

String viewName= controller.process(paramMap,model)

을 하게 되면 무슨 값이 들어가게 되나요?

paramMap과 model 자체가 map 형태인데 어떻게 string 으로 치환이 되는건지 궁금합니다.

process 메서드를 제가 잘 이해를 못한건지 이해가 잘 되지않습니다.

답변 2

1

v5를 위한 설계도라고 생각하면 되겠군요... 감사합니다. !!

0

안녕하세요, ㅇㅇㅇㅇㅇㅇ 님. 공식 서포터즈 y2gcoder 입니다.

String viewName= controller.process(paramMap,model)

을 하게 되면 무슨 값이 들어가게 되나요?

paramMap과 model 자체가 map 형태인데 어떻게 string 으로 치환이 되는건지 궁금합니다.

 

유연한 컨트롤러2 - v5 강의에서는 ControllerV4들을 추가하기로 했습니다.

ControllerV4 인터페이스(설계도라고 생각하시면 됩니다.)를 보시면

public interface ControllerV4 {
      /**
       * @param paramMap
       * @param model
       * @return viewName
       */
      String process(Map<String, String> paramMap, Map<String, Object> model);
  }

paramMap 과 model을 파라미터로 받아 viewName을 반환해주고 있습니다.

여기서 헷갈리시면 안되는게, String 타입을 파라미터로 받으면 String 타입으로 반환해야 하는 것이 아닙니다. 어떤 물건을 사기 위해 같은 물건을 주지 않고 화폐를 주고 물건을 구매하듯이, 파라미터로 Map형태가 들어갔지만 내부에 어떤 로직을 처리하고나서 반환 타입이 String인 viewName을 리턴해줄 수 있습니다.

예를 들어 ControllerV4의 구현체 중 MemberSaveControllerV4를 보겠습니다.

public class MemberSaveControllerV4 implements ControllerV4 {
      private MemberRepository memberRepository = MemberRepository.getInstance();
@Override
      public String process(Map<String, String> paramMap, Map<String, Object>
  model) {
          String username = paramMap.get("username");
          int age = Integer.parseInt(paramMap.get("age"));
          Member member = new Member(username, age);
          memberRepository.save(member);
          model.put("member", member);
          return "save-result";
} }

보시면 paramMap에서 username과 age를 받아 Member 객체를 만들어 저장소에 저장한 후, model에 저장한 member를 담아 viewName과 함께 반환하고 있습니다. 이러한 구현체와 같이 보시면 좀 더 이해가 되실 거라 생각합니다.

지금 강의에서 이 부분이 기억이 안나셨거나 이해가 되지 않으신다면 단순하고 실용적인 컨트롤러 - v4 챕터부터 다시 차근차근 보시길 권장드립니다. :)

그래도 이해가 가지 않으신다면 해당 부분을 질문주십쇼!



감사합니다.

ㅇㅇㅇㅇㅇㅇ님의 프로필 이미지
ㅇㅇㅇㅇㅇㅇ

작성한 질문수

질문하기