자바 웹 응용 프로그램은 배포 설명자 파일을 사용해 여러 가지 설정을 한다. 배포 설명자는 Web Application 실행 시 메모리에 로드된다. 배포 설명자 파일의 이름은 web.xml
이고, WEB-INF
폴더에 있다. WEB-INF
는 보안을 위해 브라우저에서 직접적으로 접근할 수 없는 폴더다.
웹 응용 프로그램의 배포 설명자는 앱의 클래스, 리소스 및 구성과 웹 서버가 웹 요청을 처리하기 위한 방법을 설명한다. 웹 서버는 요청이 들어오면 배포 설명자를 통해 요청을 URL을 처리할 코드에 매핑한다.
🔗 스프링 MVC 하루만에 배우기의 web.xml 소스코드를 예시로 보면서 설명하겠다.
web.xml의 설정 태그에는 다음과 같은 것들이 있다.
<context-param>
<!-- The definition of the Root Spring Container shared by all Servlets and Filters -->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/spring/root-context.xml</param-value>
</context-param>
<listener>
<listener-class>
를 정의하여 사용한다.<!-- Creates the Spring Container shared by all Servlets and Filters -->
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<servlet>
<servlet-name>
은 <servlet-class>
의 별칭이다. 주의할 점은 이 별칭은 servlet-mapping의 servlet-name과 같아야 한다는 것이다.<servlet-class>
는 패키지 경로를 정확하게 입력해야 한다. servlet-name과 매칭된다. <!-- 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>
에 맞춰 <servlet-name>
을 정의한다. 바로 여기서 1개의 <url-pattern>
에 1개의 <servlet-name>
을 설정한다. 여기서 어떤 서블릿을 매핑할 것인지가 결정된다. <servlet-mapping>
<servlet-name>appServlet</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>