web.xml: 배포 설명자(Deployment Descriptor)로서, 서블릿을 설정하고 웹 애플리케이션의 동작을 정의하는 파일입니다. 서블릿의 매핑, 초기화 매개변수, 필터, 리스너 등을 설정할 수 있습니다.
web.xml 파일은 WEB-INF
폴더에 위치하며, 웹 애플리케이션의 설정을 XML 형식으로 정의합니다.
<web-app xmlns="<http://xmlns.jcp.org/xml/ns/javaee>"
xmlns:xsi="<http://www.w3.org/2001/XMLSchema-instance>"
xsi:schemaLocation="<http://xmlns.jcp.org/xml/ns/javaee>
<http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd>"
version="3.1">
<!-- 서블릿 설정 -->
<servlet>
<servlet-name>HelloServlet</servlet-name>
<servlet-class>com.example.HelloServlet</servlet-class>
</servlet>
<!-- 서블릿 매핑 설정 -->
<servlet-mapping>
<servlet-name>HelloServlet</servlet-name>
<url-pattern>/hello</url-pattern>
</servlet-mapping>
<!-- 초기화 매개변수 설정 (필요시 추가) -->
<context-param>
<param-name>configLocation</param-name>
<param-value>/WEB-INF/config.properties</param-value>
</context-param>
</web-app>
<servlet-name>
: 서블릿의 이름을 지정합니다. <servlet-mapping>
과 연결됩니다.<servlet-class>
: 서블릿 클래스의 전체 경로를 지정합니다.<servlet-name>
: 요청을 처리할 서블릿의 이름을 지정합니다. <servlet>
의 servlet-name
과 일치해야 합니다.<url-pattern>
: 서블릿과 연결할 URL 패턴을 지정합니다. 예를 들어, /hello
경로에 매핑하여 http://localhost:8080/프로젝트명/hello
로 요청이 들어오면 HelloServlet이 실행됩니다.<param-name>
과 <param-value>
를 통해 전역적으로 필요한 설정 값을 지정할 수 있습니다. 예: 설정 파일 경로.<servlet>
태그 내부에서 설정하여 특정 서블릿에만 적용되는 초기 설정 값을 지정할 수 있습니다.<web-app xmlns="<http://xmlns.jcp.org/xml/ns/javaee>"
xmlns:xsi="<http://www.w3.org/2001/XMLSchema-instance>"
xsi:schemaLocation="<http://xmlns.jcp.org/xml/ns/javaee>
<http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd>"
version="3.1">
<!-- HelloServlet 서블릿 설정 -->
<servlet>
<servlet-name>HelloServlet</servlet-name>
<servlet-class>com.example.HelloServlet</servlet-class>
</servlet>
<!-- HelloServlet 매핑 설정 -->
<servlet-mapping>
<servlet-name>HelloServlet</servlet-name>
<url-pattern>/hello</url-pattern>
</servlet-mapping>
</web-app>
servlet-name
과 servlet-class
를 사용하여 서블릿 이름과 클래스를 지정합니다.url-pattern
을 /hello
로 지정하여 클라이언트가 /hello
로 요청하면 HelloServlet
이 실행되도록 설정합니다.서블릿에 특정 초기 설정 값을 전달하려면 <init-param>
태그를 사용할 수 있습니다. 예를 들어, message
라는 초기 매개변수를 설정할 수 있습니다.
<servlet>
<servlet-name>HelloServlet</servlet-name>
<servlet-class>com.example.HelloServlet</servlet-class>
<init-param>
<param-name>message</param-name>
<param-value>Hello from init-param!</param-value>
</init-param>
</servlet>
HelloServlet
내에서 getServletConfig().getInitParameter("message")
로 접근할 수 있습니다.필터는 요청과 응답의 전후에 처리할 작업을 수행할 수 있게 해줍니다. 예를 들어, 요청 로깅, 응답 압축, 인증 등을 수행할 수 있습니다.
<filter>
<filter-name>LoggingFilter</filter-name>
<filter-class>com.example.LoggingFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>LoggingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
/*
)에 대해 요청을 가로채서 필터가 처리하도록 설정합니다.리스너는 웹 애플리케이션의 상태 변화를 감지하고 처리할 수 있습니다. 예를 들어, 애플리케이션 시작 시 초기화 작업을 수행하는 리스너를 추가할 수 있습니다.
<listener>
<listener-class>com.example.AppListener</listener-class>
</listener>
AppListener
클래스는 ServletContextListener
를 구현하여, 애플리케이션 시작과 종료 시 특정 작업을 수행할 수 있습니다.web.xml
은 특히 대규모 애플리케이션에서 구조적 설정을 관리하는 데 유용하며, 서블릿의 동작과 웹 애플리케이션 전반의 설정을 한 곳에서 관리할 수 있게 해줍니다.