How Spring MVC Works Internally(자바 가이드 공식문서 정리)

박지성 학부생·2024년 2월 21일
1

BackEnd Develop log

목록 보기
21/27

워밍업부터 하기 클릭!

원본
How Spring MVC Works Internally

Spring MVC 프레임워크에서 HTTP 요청이 처리되는 단계를'우체국'에서 시작해서 '우체부'에게 전달되고, 최종적으로 사용자에게 '택배'가 도착하는 과정으로 이해해보기

  1. 클라이언트 요청 수신: 브라우저가 특정 URL로 HTTP 요청을 보내면, '우체국'과 같은 역할을 하는 DispatcherServlet이 그 요청을 받음
  2. 요청 분석: DispatcherServlet은 '지도'인 HandlerMapper에게 어떤 '우체부'(컨트롤러)가 이 편지(요청)를 배달해야 하는지 물어봄
  3. 컨트롤러 선택: HandlerMapper는 지도를 보고 이 요청을 처리할 '우체부'(컨트롤러)를 찾아 DispatcherServlet에 알려줌
  4. 요청 전달: 이제 DispatcherServlet은 해당 '우체부'(컨트롤러)에게 요청을 전달함
  5. 처리 및 모델 생성: '우체부'(컨트롤러)는 편지(요청)를 열어보고, 내용을 확인한 후 필요한 정보를 담은 '소포'(모델)를 준비 ⇒ 이 '소포'를 어떤 '포장지'(뷰의 논리적 이름)로 감쌀지 결정함 이 단계에서는 실제 '포장지'(뷰 파일)를 선택하는 것이 아니라, '포장지'의 종류를 나타내는 이름만 결정함
    • 뷰의 논리적 이름은 MVC 패턴에서 컨트롤러가 처리한 결과를 보여줄 뷰를 지정할 때 사용하는 이름
    • 이는 실제 뷰 파일의 경로나 파일 이름을 직접적으로 나타내는 것이 아니라, 애플리케이션 내에서 뷰를 참조하는 간단한 문자열 식별자
    • ex) 사용자의 프로필 페이지를 보여주는 뷰가 있을 때, 실제 파일이 /WEB-INF/views/profile.jsp에 위치해 있다고 해도, 컨트롤러에서는 이를 'profile'이라는 논리적 이름으로 참조할 수 있음
    • 컨트롤러는 이 논리적 이름을 DispatcherServlet에 반환하고, DispatcherServletViewResolver를 사용하여 이 논리적 이름에 해당하는 실제 뷰 파일의 경로를 찾아냄
    • ViewResolver는 논리적 이름을 받아 실제 파일 경로로 변환하는 규칙을 가지고 있음
    • ex) 논리적 이름이 'profile'이라면, ViewResolver는 이를 /WEB-INF/views/profile.jsp로 변환할 수 있음
    • 이렇게 함으로써 컨트롤러는 뷰의 실제 경로를 몰라도 됨. 뷰 파일의 위치나 기술을 변경해야 할 때 ViewResolver의 설정만 업데이트하면 되므로 애플리케이션의 유연성과 유지보수성이 향상
  6. 뷰 결정: 이제 DispatcherServlet은 '포장 직원'(ViewResolver)에게 '포장지'의 종류(뷰의 논리적 이름)를 알려주고, 실제로 사용할 '포장지'(뷰 파일)를 결정하도록 함. '포장 직원'는 이 논리적 이름을 바탕으로 애플리케이션에서 사용할 실제 '포장지'(뷰 파일)를 찾아 '우체부'에게 제공함
  7. 뷰 매핑: '포장 직원'(ViewResolver)는 지시받은 '택배'(뷰)를 찾아 DispatcherServlet에게 알려줌
  8. 데이터와 뷰 결합: DispatcherServlet은 정보(모델)와 '상자'(뷰)를 '포장대'(View)로 보냄
  9. HTML 생성: '포장대'(View)에서 정보를 '택배'(뷰) 안에 담아 HTML 형태로 만들어지ㅡ
  10. 응답 반환: DispatcherServlet은 포장된 '택배'(HTML 응답)를 브라우저로 보내고, 브라우저는 그 '택배'를 열어 사용자에게 보여줌
profile
참 되게 살자

0개의 댓글