사용처: @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)

작동 순서

  1. Servlet Context 안에 Servlet 등록시
  2. children(서블릿)안에 저장
  3. 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

+ Recent posts