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

최민종님의 프로필 이미지

작성한 질문수

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

View 분리 - v2

Myview 클래스

21.10.31 14:43 작성

·

339

0

강의:  View 분리 -v2

질문

ControllerV2 인터페이스 소스중에 MyView process 메소드 선언 부분을 자세하게 설명받을 수 있을까요?

소스 :"MyView process(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException;"

 

이해가안되는 부분은 Myview 클래스에서는 process 함수가없는데 매칭을하기 때문에 이해가 안되는것 같습니다..

 

답변 2

2

OMG님의 프로필 이미지

2021. 10. 31. 20:14

안녕하세요. 최민종님, 공식 서포터즈 OMG입니다.

영한님 강의의 특징이자 장점인 기술의 점진적인 발전에 대해서 설명해주시는 과정에서 혼선이 오시나보네요.

View 분리-v2 강의 초반부에 영한님은 다음과 같이 설명하셨습니다.(처음~2분)

 

"Controller가 더이상 JSP 포워드를 고민하지 않아도 된다.

MyView라는 객체를 만들어서 반환을하면 FrontController가 대신 MyView의 render를 호출하면

 

MyView가 JSP를 forward 하도록 할껍니다."

 

기존 V1 방식에서는 아래 이미지와 영한님의 설명과 같이 직접 포워드하도록 설계가 되어있습니다.

기존 V1

 

 

V2에서는 영한님의 설명대로 다음과 같이 설계가 되어 있습니다.

Controller는 직접 JSP포워딩을 하지 않고 MyView를 반환하고 있습니다.

개선된 V2

3. Controller에서 반환한 MyView를 사용.

4,5 render를 호출, render에는 forward하는 코드가 구현되어있음.(MyView render 메서드 구현참고)

 

 

정리:

영한님의 설명대로 V1->V2로 설계한 이유인

MyView라는 클래스를 만들어서 생성자에는 viewPath를 받고, render()에서 viewPath에 해당하는 JSP 포워딩이 발생하는 것을 확인하실 수 있습니다.

 

V1에서는 Controller에서 포워딩을 직접했다면, V2에서는 일련의 과정을 클래스로 추출하여 Controller에서는 View를 반환하고 FronController에서 render와 render에 있는 forward가 실행되도록 설계 방식을 바꿨다고 이해하시면 될 것 같습니다.

 

감사합니다.

1

최민종님의 프로필 이미지
최민종
질문자

2021. 11. 01. 05:39

자세하게 설명해주셔서 감사합니다.!