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

노동준님의 프로필 이미지
노동준

작성한 질문수

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

Model 추가 - v3

FrontControllerservletV3 의 render 매서드 질문입니다.

작성

·

523

0

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.

1. 강의 내용과 관련된 질문을 남겨주세요.
2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.
(자주 하는 질문 링크: https://bit.ly/3fX6ygx)
3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.
(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)

질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.
=========================================
[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? (예/아니오)
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)
3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)

[질문 내용]
여기에 질문 내용을 남겨주세요.

 

Save 나 list를 조회할때 아래의 코드가 어떻게 돌아가는지 이해할 수 있었습니다. 이때는 해당 기능을 하는 컨트롤러가 model Map에 데이터를 주입하는 과정이 있기때문인데요,

new-form같은경우는 위와같이 model 객체를 따로 만드는 것이 없는데, 그렇다면 이럴땐 그값에 Null값이 들어가게 되는 건가요? new-form 컨트롤러가 실행되었을때는 어떻게 되는지 알고 싶습니다. 만약 Map<String, Object> model 에 null 값이 들어간다고 하면 당연히 setAttribute 또한 제대로 작동이 되지 않을 것 같은데 그렇게 된다면 RequestDispatcher 부분도 제대로 작동하지 않으면서 jsp로 넘어가지 않을 것 같다는 생각이 듭니다.

public void render(Map<String, Object> model, HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
modelToRequestAttribute(model, request);
RequestDispatcher dispatcher = request.getRequestDispatcher(viewPath);
dispatcher.forward(request, response);}

private static void modelToRequestAttribute(Map<String, Object> model, HttpServletRequest request) {
model.forEach((key, value) -> request.setAttribute(key,value));}

답변 1

-1

안녕하세요. 노동준님, 공식 서포터즈 David입니다.

프론트컨트롤러V3를 타게 되면 해당 요청을 처리하게 되는 실제 컨트롤러들로 진입하기 전에 맵을 생성한 뒤, 컨트롤러 호출시 함께 넘겨주게 됩니다. 아래 코드가 그 과정입니다.

paramMap = createParamMap(reqeust)
controller.process(paramMap)

감사합니다.

노동준님의 프로필 이미지
노동준

작성한 질문수

질문하기