ebson

[SPRING STUDY] dispatcher-servlet.xml 개요와 동작과정의 이해 본문

DEV-STUDY, ETC.

[SPRING STUDY] dispatcher-servlet.xml 개요와 동작과정의 이해

ebson 2022. 8. 28. 13:21

1. DispatcherServlet

  • Spring MVC Framework의 유일한 Front Controller임. 
  • 디스패처 서브릿은 프론트 컨트롤러로서 클라이언트로부터의 모든 요청을 받은 후 세부 컨트롤러로 위임
  • 프론트 컨트롤러란 서블릿 컨테이너(예를 들어, 톰캣)의 제일 앞단에서 서버로 오는 모든 요청을 받아 처리하는 컨트롤러임
  • 디스패처 서블릿이 처리하는 url 패턴을 지정할 수 있는데 일반적으로 /*.do와 같이 정함

 

2. DispatcherServlet 생성

  • 디스패처 서블릿은 스프링 MVC 웹프로젝트를 만들 때 자동 생성
  • MAVEN기준, Resources > Libraries > Maven Dependencies > spring-webmvc-version.jar > org,springframework.web.servlet > DispatcherServlet.class 
  • 이상의 디스패처서블릿 클래스에 대한 설정파일을 만들 수 있음
  • 1) web.xml에서 서블릿 클래스의 설정파일에 대한 위치를 설정
  • 2) 설정한 위치에 파일을 생성 -> 리소스파일, jsp반환 접두-접미어 설정 등

 

3. DispatcherServlet 동작과정

  • 1) 요청접수 : 프론트컨트롤러로서 http request를 받음(web.xml의 url-pattern 설정에따름)
  • 2) 컨트롤러로 요청 위임 : 디스패처 서블릿으로 들어온 요청을 요청 정보를 참고해 컨트롤러에게 작업 위임(이때, HandlerMapping, HandlerAddapter 전략 사용)
  • 3) 컨트롤러에서 작업 진행 : 요청을 위임받은 컨트롤러에서 작업 후, 다시 디스패처 서블릿으로 결과를 반환(뷰와 모델)
  • 4) 모델을 참조한 채로 뷰 호출 : 디스패처 서블릿은 뷰 오브젝트에 모델을 넘겨주면서 최종 결과물을 생성
  • 5) 최종 응답 : 디스패처 서블릿은 공통으로 진행해야 할 후처리 작업이 있는지 확인하고 HttpServletResponse에 있는 최종 결과를 서블릿 컨테이너에게 돌려주면 서블릿 컨테이너는 클라이언트에게 응답을 전송

 

4. DispatcherServlet 사용 시 장점

  • 디스패처 서블릿은 web.xml의 역할을 매우 축소시켜주었음
  • 1) @Controller 어노테이션을 사용시 스프링이 처리
  • Servlet마다 객체를 생성하고 web.xml에 일일히 매핑하지 않아도 됨
  • @RequestMapping어노테이션으로 주소를 연결하면 디스패처 서블릿에서 해당 컨트롤러의 함수로까지 연결해줌으로서 서블릿을 일일이 만들지 않아도 됨
  • 2) 모든 주소의 공통적인 전처리, 후처리 작업 가능
  • 주소마다 Servlet을 만들어 사용하면 매우 까다로운 작업
  • 디스패처 서블릿을 사용하면 간단히 처리 가능
  • <mvc:resources /> 등을 사용해 영역을 분리하면서 효율적인 리소스관리를 할 수도 있음 -> 확장성 제공




참고 출처

https://lcs1245.tistory.com/entry/DispatcherServlet%EC%9D%B4%EB%9E%80-Spring-MVC%EC%9D%98-%ED%95%B5%EC%8B%AC 

 

https://bimmm.tistory.com/16?category=855641 

 

https://jaehun2841.github.io/2018/08/11/2018-08-11-spring-dispatcher-servlet/#Front-Controller-Pattern 

 

'DEV-STUDY, ETC.' 카테고리의 다른 글

WINDOWS link 개념과 사용 이유  (0) 2023.01.16
[SPRING STUDY] README.md  (0) 2022.09.04
log4j  (0) 2022.08.28
LG CNS DEVON FRAMEWORK  (0) 2022.08.28
데이터독(Datadog)  (1) 2022.08.28
Comments