사용처: @WebServlet으로 서블릿을 URL에 매핑할 때 사용
예시 형식: @WebServlet(urlPatterns={"/hello","hello/*"}, loadOnStartup=1)
- Servlet은 늦은 초기화가 기본이다 하지만 loadOnStartup 옵션을 주면 미리 초기화 하는 것이 가능 (=1) 값은 우선순위를 나타내며 값의 중복이 가능하다.
exact mapping ~ default mapping 까지 우선순위로 매핑
exact mapping: 정확히 매칭되는 것
- 우선순위 1등
- ex: /login/hello.do
- 동적 리소스(서블릿)
path mapping: 해당 경로가 들어간 url이 들어오면 처리
- 우선순위 2등
- ex: /login/*
- 동적 리소스(서블릿)
extension mapping: 해당 확장자가 붙은 url이 들어오면 처리
- 우선순위 3등
- ex: *.do
- 동적 리소스(서블릿)
default mapping: 디폴트 매핑 모든 주소와 매핑이 됨
- 우선순위 4등
- ex: /
- 정적 리소스(image, css, text, 404)
작동 순서
- Servlet Context 안에 Servlet 등록시
- children(서블릿)안에 저장
- servletMappings의 매핑됨
+ Spring에서는 위의 과정을 사용하지 않고 DispatcherServlet이 해당 과정을 유사하게 내부에 가지고 있다. (즉 DispatcherServlet 내부적으로 처리)
- Spring은 Servlet을 발전 시킨 것
- spring으로 개발 할 때는 jsp와 Servlet을 view로 쓰긴 하지만 등록하지는 않는다. 따라서 default(DispatcherServlet) 이 모든 것을 받는다.
- 공통 Spring web.xml (설정)파일 부분 (default mapping)
<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
- 개별 Spring web.xml (설정)파일 부분 (DispatcherServlet이 받는 것을 알 수 있다.)
<!-- Processes application requests -->
<servlet>
<servlet-name>appServlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/spring/appServlet/servlet-context.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>appServlet</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
'Development > Spring' 카테고리의 다른 글
세션 (0) | 2023.02.06 |
---|---|
Spring 쿠키 생성 삭제 (0) | 2023.02.02 |
Spring의 4개의 저장소 (0) | 2023.01.19 |
HTTP 프로토콜의 바이너리 파일 전송 (0) | 2023.01.08 |
웹과 HTTP 프로토콜 (0) | 2023.01.06 |