DispatcherServlet
*Dispatch : 파견, 보내다
Servlet Container에서 HTTP를 통해 들어오는 요청을 어디론가 빠르게 보내는 서블릿
= 프론트 컨트롤러
DispatcherServlet 개념
클라이언트로부터 어떤 요청이 오면 tomcat톰캣과 같은 servlet container가 요청을 받는데,
이 때 제일 앞에서 서버로 들어오는 모든 요청을 처리하는 프론트 컨트롤러를 spring에서 정의하였고,
이를 DispatcherServlet이라고 함
공통처리작업을 Dispatcher Servlet이 처리한 후 적절한 세부컨트롤러로 작업을 넘김
** DispatcherServlet 이 처리하는 url패턴을 지정함
일반적으로 /*.do 패턴 지정
DispatcherServlet 구조
이 서블릿도 부모 클래스에서 HttpServlet을 상속받아 사용하며, 서블릿으로 동작
DispatcherServlet → FrameworkServlet → HttpServletBean → HttpServlet
◆ 요청흐름
1. 서블릿이 호출되면 HttpServlet이 제공하는 service()메소드가 호출
2. 스프링mvc는 DispatcherServlet의 부모인 FrameworkServlet에서 service()메소드를 override해둠
3. FrameworkServlet.service()를 시작으로 여러 메소드가 실행되며, DispatcherServlet .doDispatch()가 호출
* 스프링부트 구동시 DispatcherServlet 을 서블릿으로 자동등록하며 모든 경로(urlPattern="/")에 대해 매핑
DispatcherServlet 장점
- web.xml의 역할을 상당히 축소시킴
- 해당 어플리케이션으로 들어오는 모든 요청을 핸들링해주면서 작업이 편리해짐
- DispatcherServlet이 요청을 Controller로 넘겨주는 방식은 효율적
DispatcherServlet 단점
- 모든 요청을 처리하다보니 이미지, HTML 파일을 불러오는 요청또한 Controller로 넘김
- JSP파일 안의 Java Script나 CSS파일들에 대한 요청도 모두 DispatcherServlet이 처리해서 자원을 불러오지 못하기도함
'JAVA' 카테고리의 다른 글
[Spring] AOP (Spring AOP)란? (0) | 2022.09.02 |
---|---|
[Spring] Spring MVC 란? (2) | 2022.09.01 |
[Spring] @Annotation 어노테이션이 무엇인가? (0) | 2022.08.26 |
[JSP] Custom Tag <커스텀태그> (0) | 2022.08.21 |
[JSP] Expression Language (EL) (0) | 2022.08.17 |
댓글