서블릿 URL 패턴
URL 패턴

URL 패턴의 종류는 위의 그림과 같다.
애너테이션으로 URL매핑 시 원래는 위의 그림과 같이 @WebServlet(urlPatterns={"/hello", "/hello/*"}와 같이 URL을 여러 개 등록할 수 있다.
URL 패턴에서도 우선순위가 있는데 표와 같이 정확히 일치하는 매핑 → 경로 매핑 → 확장자 매핑 → 디폴트 매핑 순이다.
위의 그림과 같이 애너테이션을 이용하여 패턴을 여러 개 지정할 수 있는데 등록된 URL 중 정확히 일치하는 패턴이 우선순위가 가장 높다.
참고로 loadOnStartup은 서블릿의 기본인 늦은 초기화를 이른 초기화로 바꿔주는 옵션이다.

서블릿 Context안에는 children과 servletMappings라는 map이 존재하는데 children은 서블릿이 등록되어 있고 servletMappings는 서블릿 매핑을 관리하는 map이다.
Servlet Context에서 어떻게 사용자의 요청을 처리하는지 예로 살펴보자.
1️⃣ 사용자가 /hello라는 요청을 하게 되면 요청이 Servlet Context로 전달된다.
2️⃣ 이 요청(/hello)과 연결된 서블릿이 무엇인지 찾기 위해 servletMappings을 먼저 확인한다.
3️⃣ 요청과 일치하는 URL 매핑 즉 key값을 찾아 value로 저장된 서블릿 이름을 찾게 된다.
4️⃣ 찾은 서블릿의 이름으로 children에서 해당 서블릿의 이름을 찾고 해당 서블릿인 HelloServlet이 요청을 처리하게 된다.
만약 servletMappings에 없는 요청이 들어오면 default ( '/' ) 서블릿이 처리한다.
defalut 매핑은 우선순위가 가장 낮기 때문에 일치하는 것이 없을 때만 요청을 처리한다.
보통 ' / ' 매핑은 정적 리소스 즉 txt, css, image파일 등 정적 리소스를 처리한다.
Reference
'스프링의 정석 : 남궁성과 끝까지 간다' 수강 후 복습한 내용입니다.