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

박민성님의 프로필 이미지

작성한 질문수

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

V3 Modelview와 Map<String, String> 질문

24.01.06 10:51 작성

·

149

0

public ModelView process(Map<String, String> paramMap) {
    String username = paramMap.get("username");
    int age = Integer.parseInt(paramMap.get("age"));

    Member member = new Member(username, age);
    memberRepository.save(member);

    ModelView mv = new ModelView("save-result");
    mv.getModel().put("member", member);
    return mv;
public class ModelView {
    private String viewName;
    private Map<String, Object> model = new HashMap<>();

    public ModelView(String viewName) {
        this.viewName = viewName;
    }

    public String getViewName() {
        return viewName;
    }

    public void setViewName(String viewName) {
        this.viewName = viewName;
    }

    public Map<String, Object> getModel() {
        return model;
    }

    public void setModel(Map<String, Object> model) {
        this.model = model;
    }

1.Modelview에서 model이 언제생성된거죠..? getmodel을 해주려면 먼저 선언이 되어있는 model을 가지고 반환해줘야하는데 언제선언이 된거죠?

 

        Map<String, String> paramMap = createParamMap(request);
        ModelView mv = controller.process(paramMap);

        String viewName = mv.getViewName(); //논리이름 new-form
        MyView view = viewResolver(viewName);

        view.render(mv.getModel(), request, response);
    }

    private static MyView viewResolver(String viewName) {
        return new MyView("/WEB-INF/views/" + viewName + ".jsp");
    }

    private static Map<String, String> createParamMap(HttpServletRequest request) {
        Map<String, String> paramMap = new HashMap<>();
        request.getParameterNames().asIterator()
                .forEachRemaining(paramName ->paramMap.put(paramName, request.getParameter(paramName)));
        return paramMap;
    }
}

 

  1. Map<String, String> createMap에서 .forEachRemaining(paramName ->paramMap.put(paramName, request.getParameter(paramName))); 여기를 보면 request.getParmeter(paramName)로 paramName에대한 Value를 가지고오고있는데 여기서 말하는 Value는 age인데 int로 선언하는게 맞지않나요?

항상 답변감사드립니다

 

답변 2

0

David님의 프로필 이미지

2024. 01. 06. 14:40

안녕하세요. 박민성님, 공식 서포터즈 David입니다.

  1. 여기서 선언되고 있습니다. 혹시나 자바의 변수 선언 문법이 익숙치 않으시다면 김영한의 자바 입문 - 코드로 시작하는 자바 첫걸음 강의의 변수 섹션을 참고해 주세요🙂

image

  1. 파라미터가 정수만 입력받는 것이 아니기에 우선 문자열로 모든 것을 받고난 뒤, 필요한 타입으로 변환하여 사용합니다.

감사합니다.

박민성님의 프로필 이미지
박민성
질문자

2024. 01. 06. 15:35

아 기본적인 실수를해버렸네요.. 아직기초가 부족했나봅니다

2번에서 자동으로 형변환이 되는건가요?

David님의 프로필 이미지

2024. 01. 07. 01:00

본 강의 HTTP 메시지 컨버터 편을 참고해 주세요:)

0

인프런 AI 인턴님의 프로필 이미지

2024. 01. 06. 10:56

안녕하세요, 인프런 AI 인턴입니다.

질문해주신 내용과 관련하여 비슷한 주제로 궁금증을 해결한 다른 수강생의 질문이 있어 링크를 공유드립니다. 해당 링크에서는 ModelViewmodel 생성 시점과 Map<String, String> 사용법에 대해 설명하고 있습니다.

  • 강의 수강생이 ModelViewmodel의 선언 및 사용 방법과 Map<String, String>의 사용법에 대해 질문한 내용에 대한 답변 링크입니다: FrontControllerServletV3의 기능중 이해가 안되는 부분이 있습니다.

  • 해당 내용에서 ModelViewmodel 필드는 ModelView 클래스의 생성자에서 생성되며, Map<String, String> paramMap을 사용하여 요청 파라미터를 매핑하고 컨트롤러에 전달하는 방식에 대해 설명하고 있습니다.

강의 내용을 다시 한번 확인해 보시고, 추가적인 질문이 있으시면 동일한 게시판에 남겨주시면 됩니다.