Java/Spring

[스프링] 디스패처 서블릿 DispatcherServlet

ImYena 2021. 9. 19. 15:16
728x90

디스패처 서블릿(DispatcherServlet)

  • 서블릿 컨테이너 가장 앞단에서 HTTP 프로토콜로 들어오는 모든 요청을 가장 먼저 받아 적합한 컨트롤러에 위임해주는 *프론트 컨트롤러
    • DisparcherServlet은 공통적인 작업을 먼저 처리한 후에 해당 요청을 처리해야 하는 세부 컨트롤러를 getBean()으로 가져와 정해진 메소드를 실행시켜 작업 위임

 

*프론트 컨트롤러(Front Controller)

: 주로 서블릿 컨테이너의 제일 앞에서 서버로 들어오는 클라이언트의 모든 요청을 받아서 처리해주는 컨트롤러,

MVC 구조에서 함께 사용되는 디자인 패턴

 

DispatcherServlet 동작 방식

출처 : https://mangkyu.tistory.com/18

 

장점

  • web.xml의 역할 축소
    • 기존의 모든 서블릿의 URL 매핑을 web.xml에 등록했지만, dispatcherServlet이 해당 애플리케이션으로 들어오는 모든 요청을 핸들링, 공통 작업 처리

단점

  • 이미지, HTML, CSS, JavaScript 등과 같은 정적 자원(Static Resources)에 대한 문제 발생

 

정적 자원 문제 해결 방안 2가지

1. 정적 자원에 대한 요청과 애플리케이션에 대한 요청 분리

  • '/resources'와 '/apps' 같은 URL을 붙여 요청 분리, 하지만 모든 요청에 URL을 붙이는 한계와 지저분해지는 소스코드 문제 발생 

2. MVC와 무관한 Resource URL 따로 매핑(dispatcherServlet 설정 파일에 작성)

  • DispatcherServlet을 통해 들어온 요청을 처리하는데 만약 디스패처 서블릿이 해당 요청에 대한 컨트롤러가 찾을 수 없다면 2차적으로 위의 설정된 경로를 검색하여 해당 자원을 찾아내게 되는 것
<mvc:resources mapping="/resources/**" location="/resources/" />
  • mapping="/resources/**" : http://localhost:8080/webapp/resources/image/photo1.jpg
  • location="/resources/"

 


출처 및 참고)

 

[Spring]Dispatcher-Servlet(디스패처 서블릿)이란?

이번에는 servlet의 심화 또는 대표주자인 dispatcher-servlet에 대해서 알아보도록 하겠습니다. 1. Dispatcher-Servlet(디스패처 서블릿)의 개념 dispatcher-servlet에서 dispatch는 보내다라는 뜻을 가지고 있..

mangkyu.tistory.com

 

@MVC와 DispatcherServlet에 대해서

이전 장까지 MyBatis와 커넥션풀의 활용, 그리고 트랜잭션에 대해 상세히 알아보았습니다. 개인적으로 이 정도의 환경이라면 소, 중형 서비스 구축에는 문제없을 정도로 환상적인 제작환경이 구

egloos.zum.com

 

728x90
반응형