스프링 부트
Spring에서 request 처리 과정
newwisdom
2021. 8. 6. 12:06
반응형
2021-04-20글
Spring에서 request 처리 과정
- DispatcherServlet : 클라이언트의 요청을 전달 받아 요청에 맞는 컨트롤러가 반환한 결과값을 View에 전달하여 알맞은 응답 생성
- HandlerMapping : 클라이언트의 요청 URL을 어떤 컨트롤러가 처리할지 결정
- Controller : 클라이언트의 요청을 처리한 뒤, 결과를 DispatcherServlet에 반환
- ModelAndView : 컨트롤러가 처리한 결과 정보 및 뷰 선택에 필요한 정보를 담음
- ViewResolver : 컨트롤러의 처리 결과를 생성할 뷰를 결정
- View : 컨트롤러의 처리 결과 화면을 생성, JSP 또는 템플릿 엔진을 뷰로 사용
- 클라이언트가 서버에 요청을 하면 DispatcherServlet이 요청을 가로챈다.
- 요청을 가로챈 DispatcherServlet은 HandlerMapping에게 어떤 컨트롤러에게 요청을 위임하면 좋을지 물어본다.
(HandlerMapping은@Controller
로 등록한 것들을 스캔해서 찾아 놓았다.) - 요청에 매핑된 Controller가 있다면 @RequestMapping을 통하여 요청을 처리할 메서드에 도달한다.
(이는 HandlerAdapter가 책임진다.) - Controller에서는 해당 요청을 처리할 Service에게 비즈니스 로직을 위임한다.
- Service에서는 DB 접근이 필요할 경우 DB 처리를 DAO에게 위임한다.
- DAO는 데이터 정보를 받아 Service에게 돌려준다.
(결과로 받은 Entity 객체를 가지고 Response에 필요한 DTO 객체로 변환한다.) - 모든 비즈니스 로직을 끝낸 Service가 결과물을 Controller에 넘긴다.
- 결과물을 받은 Controller는 필요에 따라 Model 객체에 결과물을 넣거나, View 정보를 담아 DispatcherServlet에게 보낸다.
- DispatcherServlet은 ViewResolver에게 받은 뷰에 대한 정보를 넘긴다.
- ViewResolver는 해당 View를 찾아 DispatcherServlet에게 알려준다.
(serffix, prefix를 붙여주는 것도 ViewResolver에서 수행한다.) - DispatcherServlet은 응답할 View에게 Render를 지시하고 View는 응답 로직을 처리한다.
- DispatcherServlet이 클라이언트에게 렌더링된 View를 응답한다.
참고
[Spring MVC 구조의 처리 과정을 설명해보시오. (MVC process)](
반응형