web.xml 파일과 배포서술자(Deployment Descritor)
web.xml 이란?
web.xml 파일은 웹 어플리케이션을 구성하는 웹 컴포넌트에 대한 구성 및 배치 정보를 제공하며, 웹 어플리케이션의 배포서술자(Deployment Descriptor ; DD) 역할을 하는 XML 형식의 파일이다.
더 쉽게 설명하면, 웹 어플리케이션에서 서블릿 클래스를 사용하려면, 설치 뿐만 아니라, 웹 프로젝트 상에서 등록하는 과정이 필요한데, 서블릿 클래스를 등록하는 곳을 배포서술자(Deployment Descriptor ; DD)라고 하며, 이 역할을 web.xml 파일에서 한다.
다음은 왜 웹 어플리케이션에서 배포서술자를 사용하는지에 대한 설명이다.
1. 컨테이너 호환성 유지
웹 어플리케이션의 배포와 관련된 정보를 제공함으로써 서로 다른 컨테이너에서도 별도의 설정 없이 동일한 어플리케이션을 운영할 수 있다.
2. 효율적인 어플리케이션 유지보수
특정 서블릿 혹은 전체 어플리케이션에서 공유하기 위한 초기화 파라미터의 설정이 가능하므로, 어플리케이션 프로그램 간 데이터 공유가 용이하다.
3. 유연한 어플리케이션 운영
서블릿 매핑 등 다양한 정보를 텍스트 기반으로 설정할 수 있으므로, 서비스 운영 중 프로그램을 수정하지 않고도 어플리케이션 동작 등에 대한 조정(커스터마이징)이 가능하다.
배포서술자는 WAS 구동 시 web.xml을 읽어 Web Applicationdml 설정을 구성하므로, web.xml 파일을 수정할 경우에는 WAS를 재구동 해야한다.
web.xml 파일은 웹 어플리케이션 디렉토리마다 하나씩 존재할 수 있다.
web.xml의 위치
Java EE 기준으로 web.xml 파일은 웹 어플리케이션에 존재하는 디렉토리 계층 구조의 컨텍스트 아래에 있는 WEB-INF 디렉토리 하위에 있다.
웹어플리케이션폴더 > WebContent > WEB-INF > web.xml
사용예시
아래의 web.xml 예제스크립트는 Sample 웹 어플리케이션에서 SampleServlet을 선언하는 방법을 나타낸다.
web.xml 파일에서 <servlet> XML 요소는 SampleServlet을 선언하고, examples.Sample Java 클래스는 서블릿을 구현한다.
또한, <servlet-mapping> XML 요소는 서블릿을 호출하는 /sample URL 패턴을 지정하는데, 이 URL 패턴은 index.html 파일에서 사용된다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 |
<?xml version="1.0" encoding="UTF-8" ?>
<web-app xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
version="2.4">
<display-name>Sample Application</display-name>
<description>
This is a simple web application with a source code organization
based on the recommendations of the Application Developer's Guide.
</description>
<servlet>
<servlet-name>SampleServlet</servlet-name>
<servlet-class>examples.Sample</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>SampleServlet</servlet-name>
<url-pattern>/sample</url-pattern>
</servlet-mapping>
</web-app> |
|
Create servlet without 'web.xml'
서블릿 초기 표준에는 web.xml 이 반드시 필요했지만, 서블릿 3.0 버전부터 Annotation을 지원하게 되면서, 더이상 서블릿 클래스나 필터 사용을 위해 web.xml에 기술하지 않아도 프로그래밍하는 것이 가능해졌다. 서블릿 사용 시 @WebServlet을 써주면 된다.