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

도토리님의 프로필 이미지

작성한 질문수

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

Model 추가 - v3

FrontControllerV3에서 paramMap 만드는 부분 질문

작성

·

769

0

파라미터 이름이 username, age라는 것을 알고 있는데, request.getParameterNames()를 사용하고 iterator로 전체 조회를 하는 이유가 무엇인가요?

아래 코드는 제가 예상했던 코드인데, 선생님께서는 파라미터를 입력 받지 못하는 경우 등을 고려한 일반적인 상황에 대한 코드를 작성하신 것인가요..??

String username = request.getParameter("username");
String age = request.getParameter("age");

Map<String, String> paramMap = new HashMap<>();
paramMap.put("username", username);
paramMap.put("age", age);

답변 2

1

안녕하세요. 도토리님, 공식 서포터즈 OMG입니다.
.

네 생각하신게 맞습니다.

name과 age만 요청파라미터에 포함하지 않고 실제 들어올 더 다양한 종류의 파라미터를 처리하기 위한 코드로 이해하시면 될 것 같아요.

결국 map에서 꺼내서 사용하는 코드는 아래와 같더라도 말이죠.

올리신 코드보다 범용적인 예시를 처리할 수 있다 정도로 이해하고 넘어가셔도 될 것 같아요.

 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;
}


.
감사합니다.

0

도토리님의 프로필 이미지
도토리
질문자

(강의 좀 더 듣다가 생각난 이유)
프론트 컨트롤러가 saveController 클래스에 특화된 것이 아니다.
따라서 saveController에 대해서만 적용되는 코드인 paramMap.get("username"), paramMap.get("age") 같은 코드보다는 일반 코드를 사용하신 게 아닐까? 하는 생각이 든다.