Dispatcher-Servlet란?

HTTP 프로토콜로 들어오는 모든 요청을 가장 먼저 받아 적합한 컨트롤러에 위임해주는 프론트 컨트롤러
과거와 비교
과거에는 모든 서블릿을 URL 매핑을 위해 web.xml에 모두 등록해주어야 했지만, dispatcher-servlet이 해당 어플리케이션으로 들어오는 모든 요청을 핸들링해주고 공통 작업을 처리면서 상당히 편리하게 이용할 수 있게 되었습니다. 우리는 컨트롤러를 구현해두기만 하면 디스패처 서블릿가 알아서 적합한 컨트롤러로 위임을 해주는 구조가 되었습니다.
정적 자원 처리
1. 정적 자원 요청과 애플리케이션 요청을 분리
- /apps 의 URL로 접근하면 Dispatcher Servlet이 담당한다.
- /resources 의 URL로 접근하면 Dispatcher Servlet이 컨트롤할 수 없으므로 담당하지 않는다.
모든 요청에 URL을 붙여주어야 하므로 코드가 복잡하고 직관적이지 않음
2. 애플리케이션 요청을 탐색하고 없으면 정적 자원 요청으로 처리
Dispatcher Servlet이 요청을 처리할 컨트롤러를 먼저 찾고, 요청에 대한 컨트롤러를 찾을 수 없는 경우에, 2차적으로 설정된 자원(Resource) 경로를 탐색하여 자원을 탐색
=> 영역 분리로 효율적인 리소스 관리를 지원할 뿐 아니라 추후에 확장을 용이하게 해준다는 장점이 있습니다.
동작 방식

- 클라이언트의 요청을 디스패처 서블릿이 받음
- 요청 정보를 통해 요청을 위임할 컨트롤러를 찾음
- 요청을 컨트롤러로 위임할 핸들러 어댑터를 찾아서 전달함
- 핸들러 어댑터가 컨트롤러로 요청을 위임함
- 비지니스 로직을 처리함
- 컨트롤러가 반환값을 반환함
- 핸들러 어댑터가 반환값을 처리함
- 서버의 응답을 클라이언트로 반환함
출처: https://mangkyu.tistory.com/18 [MangKyu's Diary:티스토리]
'CS' 카테고리의 다른 글
[CS] HTTP API vs REST API (0) | 2024.05.01 |
---|---|
[CS] Spring DTO (1) | 2024.05.01 |
[CS] Spring MVC (0) | 2024.05.01 |
[CS] Spring Framework (1) | 2024.05.01 |
[CS] Spring 빈 스코프(Bean Scope) (0) | 2024.05.01 |
Dispatcher-Servlet란?

HTTP 프로토콜로 들어오는 모든 요청을 가장 먼저 받아 적합한 컨트롤러에 위임해주는 프론트 컨트롤러
과거와 비교
과거에는 모든 서블릿을 URL 매핑을 위해 web.xml에 모두 등록해주어야 했지만, dispatcher-servlet이 해당 어플리케이션으로 들어오는 모든 요청을 핸들링해주고 공통 작업을 처리면서 상당히 편리하게 이용할 수 있게 되었습니다. 우리는 컨트롤러를 구현해두기만 하면 디스패처 서블릿가 알아서 적합한 컨트롤러로 위임을 해주는 구조가 되었습니다.
정적 자원 처리
1. 정적 자원 요청과 애플리케이션 요청을 분리
- /apps 의 URL로 접근하면 Dispatcher Servlet이 담당한다.
- /resources 의 URL로 접근하면 Dispatcher Servlet이 컨트롤할 수 없으므로 담당하지 않는다.
모든 요청에 URL을 붙여주어야 하므로 코드가 복잡하고 직관적이지 않음
2. 애플리케이션 요청을 탐색하고 없으면 정적 자원 요청으로 처리
Dispatcher Servlet이 요청을 처리할 컨트롤러를 먼저 찾고, 요청에 대한 컨트롤러를 찾을 수 없는 경우에, 2차적으로 설정된 자원(Resource) 경로를 탐색하여 자원을 탐색
=> 영역 분리로 효율적인 리소스 관리를 지원할 뿐 아니라 추후에 확장을 용이하게 해준다는 장점이 있습니다.
동작 방식

- 클라이언트의 요청을 디스패처 서블릿이 받음
- 요청 정보를 통해 요청을 위임할 컨트롤러를 찾음
- 요청을 컨트롤러로 위임할 핸들러 어댑터를 찾아서 전달함
- 핸들러 어댑터가 컨트롤러로 요청을 위임함
- 비지니스 로직을 처리함
- 컨트롤러가 반환값을 반환함
- 핸들러 어댑터가 반환값을 처리함
- 서버의 응답을 클라이언트로 반환함
출처: https://mangkyu.tistory.com/18 [MangKyu's Diary:티스토리]
'CS' 카테고리의 다른 글
[CS] HTTP API vs REST API (0) | 2024.05.01 |
---|---|
[CS] Spring DTO (1) | 2024.05.01 |
[CS] Spring MVC (0) | 2024.05.01 |
[CS] Spring Framework (1) | 2024.05.01 |
[CS] Spring 빈 스코프(Bean Scope) (0) | 2024.05.01 |