스프링부트에서는 Dispatcher서블릿등 앞단을 가렸다. 하지만 전체적인 구조는 알아야한다.
컨트롤러를 디스패처에서 관리하기 위해서는 리플렉션을 알아야 한다.
리플렉션을 통해 클래스타입을 통일시켜야한다. 리플렉션을 통해 다형성
DispatcherServlet
- 기본적으로 입력,처리,출력 서블릿이 여러개 존재한다
- 공통 처리 부분을 DispatcherServlet을 통해 제거한다.
- DispatcherServlet이 전처리를 해준다.
Spring MVC의 요청처리과정
- 요청이 들어오면 DispatcherServlet은 HandlerMapping한테 해당 URL에 대한 Handler Method 정보를 받아온다.
- HandlerAdapter를 통해 DispatcherServlet와 Controller을 느슨한 연결을 한다. -> 변경에 유리하도록 만듬
- HandlerMapping을 통해 받아온 정보로 이것을 누가 처리할 수 있는지 HandlerAdapter들에게 물어본다.
-> HandlerAdapter를 통해 어떤 Controller로 호출할지 결정 - DispatcherServlet가 해당 HandlerAdapter를 통해 Controller를 호출하고 뷰이름을 받아온다.
- DispatcherServlet가 InternalResourceViewResolver (servlet - context.xml)에 view이름을 넘겨주면 해당 이름에 접두사(/WEB-INF/views/)와 접미사(.jsp)를 붙혀 실제 뷰이름을 반환한다.
- DispatcherServlet이 해당 뷰를 호출하고 모델을 전달하면 해당 jsp 파일이 모델을 이용해 응답결과를 만들고 client에 응답을 해준다.
- jsp 파일은 JstlView가 처리한다.
DispatcherSerlvet.java 소스코드
'I leaned > 스프링,스프링부트' 카테고리의 다른 글
컨트롤러에 비즈니스로직을 넣으면 안되는 이유 (0) | 2023.07.04 |
---|---|
데이터의 변환과 검증 (0) | 2023.05.30 |
예외처리 (0) | 2023.05.25 |
세션(Session) (0) | 2023.05.24 |
쿠키(Cookie) (0) | 2023.05.24 |