[Spring] RequestMapping 흐름을 이해해보자

이진성·2021년 7월 30일
0

Dispatcher-Servlet

[Spring]에서 Dispatcher-Servlet
[Servlet]에서 FrontController와 유사한 개념이다.

https://doublesprogramming.tistory.com/84
프로젝트의 Context Root의 경로 : / (즉, root)

  1. 클라이언트가 root 페이지(/) 요청

  2. web.xml에서 Dispatcher-Servlet이 클라이언트의 요청을 핸들링

    • web.xml에서 Dispatcher-Servlet(스프링에 내장된 컨트롤러)으로 이동.
    • 웹서버가 실행되면 가장먼저 web.xml을 읽어들인다.
  3. 이 Dispatcher-Servlet이 servlet-context.xml에서 HandlerMapping을 통해 Controller를 검색한다.(@Controller로 스프링 빈즈에 매핑한게 있는지..?)

    • Dispatcher-Servlet이 servlet-context.xml에서 <context:component-scan base-package="org.zerock.myapp.controller" /> base-pakage를 scan해서 Controller를 검색
  4. 검색한 Controller(SampleController.java)에서 @RequestMapping 어노테이션으로 URL 매핑이된 Controller/메소드(basic())처리

    • 즉, 매핑한 URL로 접속하면 해당 메소드를 수행한다는 의미인듯?
    • @RequestMapping 어노테이션은 매핑할 URL에서 해당 메소드를 처리한다는 의미
  5. Dispatcher-Servlet은 컨트롤러에서 보내온(basic() 메소드의 return 문자열) View 이름(basic1)을 토대로 처리할 View를 검색한다.
    처리할 View(basic1)는 Dispatcher-Servlet이 servlet-context.xml에서 Bean으로 등록된
    [ InternalResourceViewResolver ] 를 통해 해당 메소드(basic())에서 return 해주는 문자열(basic1)을, 접두사 접미사 사이에 대입해주어 매핑해준다.

    접두사 :   prefix                 /WEB-INF/views
    접미사 :   suffix                 .jsp
    즉,      /WEB-INF/views/ + "basic1" + .jsp

  1. 처리결과(/WEB-INF/views/basic1.jsp)가 포함된 View(basic ?? basic1.jsp ??)를 Dispatcher-Servlet에 송신
  1. 이 후, @RequestMapping(BaseURI) + @RequestMapping(상세URI) 경로로(http://ijinseong-ui-macbookpro.local:8090/sample/basic) 접속하면, 최종결과인 /WEB-INF/views/basic1.jsp경로의 basic1.jsp의 내용이 출력된다.

0개의 댓글