1. Servlet이란?
자바 서블릿(Java Servlet)은 자바를 사용하여 웹페이지를 동적으로 생성하는 서버측 프로그램 혹은 그 사양을 말하며, 흔히 "서블릿"이라 불린다. 자바 서블릿은 웹 서버의 성능을 향상하기 위해 사용되는 자바 클래스의 일종이다.
자바 서블릿은 `자바 EE 사양의 일부분`으로, 주로 이 기능을 이용하여 쇼핑몰이나 온라인 뱅킹 등의 다양한 웹 시스템이 구현되고 있다.
2. Dispatcher Servler이란?
1) 프론트 컨트롤러
디스패처 서블릿의 dispatch는 "보내다"라는 뜻을 가지고 있습니다. 그리고 이러한 단어를 포함하는 디스패처 서블릿은 HTTP 프로토콜로 들어오는 모든 요청을 가장 먼저 받아 적합한 컨트롤러에 위임해주는 프론트 컨트롤러(Front Controller)라고 정의할 수 있습니다.
이것을 보다 자세히 설명하자면, 클라이언트로부터 어떠한 요청이 오면 Tomcat(톰캣)과 같은 서블릿 컨테이너가 요청을 받게 됩니다. 그리고 이 모든 요청을 프론트 컨트롤러인 디스패처 서블릿이 가장 먼저 받게 됩니다. 그러면 디스패처 서블릿은 공통적인 작업을 먼저 처리한 후에 해당 요청을 처리해야 하는 컨트롤러를 찾아서 작업을 위임합니다.(실제 작업은 위임 컴포넌트를 통해 수행됩니다.)
여기서 Front Controller(프론트 컨트롤러)라는 용어가 사용되는데, Front Controller는 주로 서블릿 컨테이너의 제일 앞에서 서버로 들어오는 클라이언트의 모든 요청을 받아서 처리해주는 컨트롤러로써, MVC 구조에서 함께 사용되는 디자인 패턴입니다.
// 과거에는 모든 서블릿을 URL 매핑을 위해 web.xml에 모두 등록해주어야 했지만, dispatcher servlet이 해당 어플리케이션으로 들어오는 모든 요청을 핸들링해주고 공통 작업을 처리해주면서 상당히 편리하게 이용하게 된 것입니다.
2) 정적 자원과 동적 자원을 분할 처리
디스패처 서블릿에서 요청을 처리할 컨트롤러를 먼저 찾고, 컨트롤러가 없을땐 2차로 설정된 정적 자원을 탐색합니다. 이렇게 영역을 분리하면 효율적인 리소스 관리를 지원할 뿐 아니라 추후에 확장을 용이하게 해준다는 장점이 있습니다.
3. Dispatcher Servlet의 동작 과정
Dispatcher Servlet은 적합한 컨트롤러와 메소드를 찾아 요청을 위임해야 합니다. 동작 과정은 다음과 같습니다.
1. 클라이언트의 요청을 Dispatcher Servlet이 받음
2. 요청 정보를 보고 Servlet WebApplicationContext 안에서 HandlerMapping을 통해 요청을 위임할 컨트롤러를 검색해 찾는다.
3. 찾은 컨트롤러로 요청을 위임할 Handler Adapter를 찾는다.
4. HandlerAdapter가 컨트롤러로 요청(HttpRequest)을 위임한다.
5. 컨트롤러는 Root WebApplicationContext 속 Service, Repository 등을 호출해가며 비즈니스 로직을 처리한다.
6. 컨트롤러 메소드에서 최종적인 반환값(Response Entity)이 리턴된다.
7. 핸들러 어댑터 리턴 값을 ViewResolver에 저장한다.
8. ViewResolver가 View를 검색하고 찾은 View에 응답을 전달한다.
9. Dispatcher Servlet에서 View로부터 받은 응답을 클라이언트(프론트 서버)로 반환해준다.
출처
https://ko.wikipedia.org/wiki/자바_서블릿
자바 서블릿 - 위키백과, 우리 모두의 백과사전
위키백과, 우리 모두의 백과사전. 서블릿은 여기로 연결됩니다. 다른 뜻에 대해서는 서블렛 문서를 참고하십시오. JSP 파일의 수명. 자바 서블릿(Java Servlet)은 자바를 사용하여 웹페이지를 동적으
ko.wikipedia.org
https://mangkyu.tistory.com/18
[Spring] Dispatcher-Servlet(디스패처 서블릿)이란? 디스패처 서블릿의 개념과 동작 과정
이번에는 servlet의 심화 또는 대표주자인 dispatcher-servlet에 대해서 알아보도록 하겠습니다. 1. Dispatcher-Servlet(디스패처 서블릿)의 개념 [ Dispatcher-Servlet(디스패처 서블릿) 이란? ] 디스패처 서블릿의
mangkyu.tistory.com
'개발 > Spring' 카테고리의 다른 글
[Spring Boot] 예외 처리 전략 - @ControllerAdvice를 이용한 Exception 처리 (0) | 2022.09.01 |
---|---|
CRUD API (0) | 2022.07.07 |
[Spring Boot] 도메인 계층에서 비즈니스 로직 처리 (0) | 2022.07.05 |
[Spring Boot] Spring Boot + Gradle 프로젝트에 JPA 적용 (0) | 2022.07.04 |
[SpringBoot] 테스트 코드 작성, TDD (0) | 2022.05.17 |