21.09.22 11:21 작성
·
319
3
Map<String, String> paramMap = createParamMap(request);
ModelView mv = controller.process(paramMap);
String viewName = mv.getViewName();
MyView view = viewResolver(viewName);
view.render(mv.getModel(), request, response);
안녕하세요
위 소스에 대한 내용이 궁금해서 문의 드립니다.
제가 이해한대로 우선 설명을 드리면..
Map<String, String> paramMap = createParamMap(request);
request에서 받아온 값들을 Key, Value 형식으로 paramMap에 담아주는 역할을 함.(key: username, value : 34)이런식으로
ModelView mv = controller.process(paramMap);
주소값에 따라 value에 저장되어있는 컨트롤러(ex> MemberListControllerV3에서 저장한 viewName을 반환해준다(안에 값이 있으면 같이 보내준다(컨트롤러의 기능에 따라 저장된 값들)
String viewName = mv.getViewName();
이 부분이 위의 mv에 저장되어있던 값들중 viewName값(save-resultemd)을 가져온다.
MyView view = viewResolver(viewName);
이곳에서 전체적인 경로(/WEB-INF/views/ + viewName + .jsp)를 조합해서 리턴할 풀 경로를 만들어준다.
view.render(mv.getModel(), request, response);
이 부분이 제일 이해가 안가는 부분입니다.
모델에 있는 값들을 꺼내서 request에 담아서 jsp쪽으로 보내주는 내용인데..
render를 할 때 mv.getModel() 이 값에 모델 정보들을 넘겨주는데 getModel이라는 정보가 위에서 controller.process(paramMap)의 컨트롤러에서 process메소드를 실행해서 넣어준 mv.getModel().put() 값을 말하는게 맞는거죠?
그렇게 만들어준 값들을 view 화면에 넘겨주기 위해서 render를 할 때 mv.getModel정보를 같이 render에 넘겨줘서 render에서는 해당 값들을 뽑아서 request값에 setAttribute로 key, value로 넣어줘야 jsp 파일에서 쉽게 사용을 할 수 있기 때문에 render에서 request에 담아서 화면단으로 넘겨주는게 맞는거죠??
정리가 안되는 부분이 있어서 문의글을 적으면서 차근차근 글을 적다보니 대략적으로 이런식으로 흘러가는거구나.. 하고 감이 잡히는 것 같은데 제가 이해하고 있는 부분이 맞는건지, 아니면 놓치는 부분이 있는지 궁금합니다.
답변 1
1
2021. 09. 22. 19:37
안녕하세요. 아버지님
생각하신 내용이 맞습니다.
공부하시고 잘 정리가 안되면 한번 정도 정리하면서 복습하시면 쉽게 이해가 되실거에요.
감사합니다.
2021. 09. 22. 20:52
답변 감사합니다.^^
맞게 이해하고 있다니 다행이네요^^;
질문을 할려고 내용을 차근차근 정리하다보면 의도치않게 자문 자답을 할 때가 있기는 하더라구요.
그럴때는 은근히 뿌듯하기도 하고, 맞게 이해하고 있는지 확인만 하는 차원에서도 조금이라도 궁금하거나 이해가 안가는 부분이 있으면 정리하면서 질문글을 올리는것도 좋은 것 같네요^^