[Day 22 | Servlet] Web.xml

y♡ding·2024년 11월 12일
0

데브코스 TIL

목록 보기
145/163

web.xml: 배포 설명자(Deployment Descriptor)로서, 서블릿을 설정하고 웹 애플리케이션의 동작을 정의하는 파일입니다. 서블릿의 매핑, 초기화 매개변수, 필터, 리스너 등을 설정할 수 있습니다.


web.xml의 주요 역할

  1. 서블릿 매핑: 서블릿 클래스와 URL 경로를 연결하여 특정 URL 요청이 들어올 때 해당 서블릿이 실행되도록 합니다.
  2. 필터와 리스너 설정: 요청 전/후 작업을 처리하는 필터와 애플리케이션 상태 변화에 대한 이벤트 처리를 담당하는 리스너를 설정할 수 있습니다.
  3. 초기화 매개변수 설정: 애플리케이션과 서블릿에 필요한 초기 매개변수를 설정할 수 있습니다.
  4. 보안 설정: 보안 설정을 통해 특정 URL에 접근 권한을 부여하거나, 인증을 적용할 수 있습니다.

기본 web.xml 구조

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>

web.xml의 주요 구성 요소

  1. : 서블릿 클래스를 정의합니다. 서블릿 이름과 클래스 경로를 설정합니다.
    • <servlet-name>: 서블릿의 이름을 지정합니다. <servlet-mapping>과 연결됩니다.
    • <servlet-class>: 서블릿 클래스의 전체 경로를 지정합니다.
  2. : 특정 URL 요청이 해당 서블릿으로 매핑되도록 설정합니다.
    • <servlet-name>: 요청을 처리할 서블릿의 이름을 지정합니다. <servlet>servlet-name과 일치해야 합니다.
    • <url-pattern>: 서블릿과 연결할 URL 패턴을 지정합니다. 예를 들어, /hello 경로에 매핑하여 http://localhost:8080/프로젝트명/hello로 요청이 들어오면 HelloServlet이 실행됩니다.
  3. : 웹 애플리케이션 전체에서 사용할 수 있는 전역 매개변수를 정의합니다.
    • <param-name><param-value>를 통해 전역적으로 필요한 설정 값을 지정할 수 있습니다. 예: 설정 파일 경로.
  4. : 특정 서블릿에 대한 초기화 매개변수를 설정합니다.
    • <servlet> 태그 내부에서 설정하여 특정 서블릿에만 적용되는 초기 설정 값을 지정할 수 있습니다.

web.xml을 사용한 서블릿 설정 예제

HelloServlet 서블릿을 web.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">

    <!-- 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>
  • HelloServlet 서블릿 설정: servlet-nameservlet-class를 사용하여 서블릿 이름과 클래스를 지정합니다.
  • 서블릿 매핑 설정: url-pattern/hello로 지정하여 클라이언트가 /hello로 요청하면 HelloServlet이 실행되도록 설정합니다.

추가 기능

1. 초기화 매개변수 설정 (서블릿에 대한 init-param)

서블릿에 특정 초기 설정 값을 전달하려면 <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")로 접근할 수 있습니다.

2. 필터 설정

필터는 요청과 응답의 전후에 처리할 작업을 수행할 수 있게 해줍니다. 예를 들어, 요청 로깅, 응답 압축, 인증 등을 수행할 수 있습니다.

<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>
  • LoggingFilter라는 필터를 설정하고, 모든 URL 패턴 (/*)에 대해 요청을 가로채서 필터가 처리하도록 설정합니다.

3. 리스너 설정

리스너는 웹 애플리케이션의 상태 변화를 감지하고 처리할 수 있습니다. 예를 들어, 애플리케이션 시작 시 초기화 작업을 수행하는 리스너를 추가할 수 있습니다.

<listener>
    <listener-class>com.example.AppListener</listener-class>
</listener>
  • AppListener 클래스는 ServletContextListener를 구현하여, 애플리케이션 시작과 종료 시 특정 작업을 수행할 수 있습니다.

요약

  • web.xml은 서블릿 매핑, 초기화 매개변수, 필터, 리스너 등을 설정하여 웹 애플리케이션의 전반적인 동작을 정의하는 역할을 합니다.
  • *와 을 통해 서블릿 클래스를 정의하고, 요청이 들어올 URL 패턴과 연결하여 특정 요청이 어떤 서블릿에서 처리될지 설정합니다.
  • *과 을 사용하여 전역 및 서블릿에 대한 초기화 설정을 적용할 수 있습니다.

web.xml은 특히 대규모 애플리케이션에서 구조적 설정을 관리하는 데 유용하며, 서블릿의 동작과 웹 애플리케이션 전반의 설정을 한 곳에서 관리할 수 있게 해줍니다.

0개의 댓글

관련 채용 정보