
서블릿 매핑 우선순위Backend/Servlet | JSP2025. 1. 31. 12:04
Table of Contents
서블릿 매핑 규칙
서블릿 매핑은 우선순위가 존재하며 가장 먼저 성공한 매핑이 사용되고 이후 매칭은 시도하지 않는다.
다음은 1번부터 차례대로 우선순위를 가지는 매핑이다.
- 정확한 경로 매핑 (Exact Match)
- 요청 경로가 서블릿 매핑과 정확히 일치하면 해당 서블릿이 선택
- 예:
/catalog
요청이/catalog
로 매핑된 서블릿에 전달
- 경로 기반 매핑 (Path Mapping)
- 서블릿 컨테이너는 요청 경로와 매핑 패턴이 가장 긴 경로를 선택
- 매핑은 디렉토리 구조처럼 계층적으로 탐색되며,
/
문자를 경로 구분자로 사용 - 예:
/foo/bar/index.html
요청이 들어왔을 때foo/bar/*
와foo/*
매핑이 있다면foo/bar/*
로 매핑된 서블릿에 요청 전달
- 확장자 매핑 (Extension Mapping)
- 요청 경로의 마지막 부분이 특정 확장자(예:
.jsp
,.bop
)와 일치하면 해당 서블릿이 선택된다. - 예:
*.bop
매핑이/index.bop
요청에 적용
- 요청 경로의 마지막 부분이 특정 확장자(예:
- 기본 서블릿 (Default Servlet)
- 이전 규칙으로 매칭되지 않는 경우 컨테이너는 요청된 리소스가 정적 파일인지 확인한다.
- 설정된 "default"서블릿이 요청으 처리한다.
- 예:
/catalog/index.html
요청이 정적 리소스로 처리되거나 DefaultServlet으로 전달
예시
서블릿 매핑 정의
패턴 | 서블릿 이름 |
/foo/bar/* | servlet1 |
/baz/* | servlet2 |
/catalog | servlet3 |
*.bop | servlet4 |
요청 경로에 따른 매핑 결과
요청 경로 | 처리 서블릿 |
/foo/bar/index.html | servlet1 |
/foo/bar/index.bop | servlet1 |
/baz | servlet2 |
/baz/index.html | servlet2 |
/catalog | servlet3 |
/catalog/index.html | DefaultServlet |
/catalog/racecar.bop | servlet4 |
/index.bop | servlet4 |
/foo/bar/index.html
→ servlet1/foo/bar/
로 시작하는 경로이므로/foo/bar/*에 매핑된
servlet1`이 처리
/foo/bar/index.bop
→servlet1
/foo/bar/*
가.bop
확장자 매핑보다 더 구체적(긴 경로 매칭)으로 매칭
/baz
→servlet2
/baz
경로는/baz/*
패턴에 매칭/baz/*
는/baz
자체도 포함하기 때문에servlet2
가 처리
/baz/index.html
→servlet2
/baz/
로 시작하므로/baz/*
에 매핑된servlet2
가 처리
/catalog
→servlet3
/catalog
와 정확히 매칭되므로servlet3
이 처리
/catalog/index.html
→DefaultServlet
/catalog/index.html
은/catalog
로 정확히 매칭되지 않으므로DefaultServlet
으로 전달- 정확히 매칭이 되지않는 경로는 DefaultServlet이 처리하기 때문
/catalog/racecar.bop
→servlet4
.bop
확장자로 끝나므로*.bop
패턴에 매칭된servlet4
가 처리
/index.bop
→servlet4
.bop
확장자로 끝나므로*.bop
패턴에 매칭된servlet4
가 처리
참고
'Backend > Servlet | JSP' 카테고리의 다른 글
Jsp 사용할 때 루트 경로에서 index.jsp가 작동하는 이유 (0) | 2025.01.28 |
---|---|
JSP 동작 원리 (1) | 2025.01.22 |
WAS(Tomcat)가 필요한 이유 (0) | 2024.12.24 |
Apache Tomcat 버전별 Jakarta EE 의존성 설정 (2) | 2024.12.10 |
@nuheajiohc :: nuheajiohc
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!