[Spring] web.xml?

김진서·2024년 3월 1일
1

Spring MVC

목록 보기
4/9
post-thumbnail

web.xml

web.xml은 Java 웹 애플리케이션에서 사용되는 배포 설명자(Deployment Descriptor). 이 파일은 WAR(Web Archive) 파일의 메타데이터를 정의하고 웹 애플리케이션의 설정을 구성.

주요한 역할은 다음과 같다:

  1. Servlet 매핑: Servlet 클래스를 URL 패턴에 매핑하여 클라이언트의 요청을 처리.
  2. Filter 설정: HTTP 요청 및 응답을 가로채고 수정하기 위한 필터를 구성.
  3. Listener 정의: 웹 애플리케이션의 생명주기 이벤트를 처리하기 위한 리스너를 설정.
  4. Error 페이지 설정: 오류 발생 시 사용자에게 표시할 오류 페이지를 정의.
  5. 컨텍스트 파라미터 설정: 웹 애플리케이션 전역에서 사용할 컨텍스트 파라미터를 설정.
  6. 세션 설정: 세션의 유효 시간과 관련된 설정을 정의.
  7. 보안 설정: 웹 애플리케이션의 보안 설정을 구성.
  8. JNDI 리소스: JNDI(Java Naming and Directory Interface) 리소스에 대한 설정을 제공.
  9. Welcome 파일 설정: 웹 애플리케이션 루트로 요청 시 표시할 기본 파일을 설정.

-> 정말 다양한 것을 할 수 있다.

일반적인 Spring 프로젝트 web.xml

<?xml version="1.0" encoding="UTF-8"?>
<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_4_0.xsd"
         version="4.0">
  <context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>/WEB-INF/applicationContext.xml</param-value>
  </context-param>
  <listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
  </listener>
  <servlet>
    <servlet-name>dispatcher</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
  </servlet>
  <servlet-mapping>
    <servlet-name>dispatcher</servlet-name>
    <url-pattern>/</url-pattern>
  </servlet-mapping>

  <filter>
    <filter-name>encodingFilter</filter-name>
    <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
    <init-param>
      <param-name>encoding</param-name>
      <param-value>UTF-8</param-value>
    </init-param>
    <init-param>
      <param-name>forceEncoding</param-name>
      <param-value>true</param-value>
    </init-param>
  </filter>
  <filter-mapping>
    <filter-name>encodingFilter</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>
</web-app>

각 요소는 애플리케이션의 구성과 동작을 정의. 이 파일의 각 요소에 대한 설명은 다음과 같다:

  1. context-param: 웹 애플리케이션의 컨텍스트 파라미터를 설정. 여기서는 contextConfigLocation이라는 파라미터를 정의하여 Spring의 ContextLoaderListener가 읽어들일 애플리케이션 컨텍스트 설정 파일의 위치를 지정.
  2. listener: 웹 애플리케이션의 리스너를 설정. 여기서는 Spring의 ContextLoaderListener를 등록하여 웹 애플리케이션 컨텍스트를 로드하고 구성.
  3. servlet: 서블릿을 설정. 여기서는 Spring의 DispatcherServlet을 설정하고 dispatcher라는 이름을 지정. 이 서블릿은 클라이언트 요청을 받아들이고 적절한 핸들러로 라우팅.
  4. servlet-mapping: 서블릿 매핑을 설정. 이 요소는 특정 URL 패턴과 서블릿을 연결. 여기서는 / 패턴에 대해 앞서 정의한 dispatcher 서블릿을 매핑.
  5. filter: 필터를 설정. 필터는 클라이언트 요청이 서블릿에 도달하기 전이나 후에 요청 및 응답 데이터를 수정하거나 검사하는 데 사용. 여기서는 문자 인코딩 필터를 설정하여 클라이언트 요청 및 응답의 문자 인코딩을 UTF-8로 설정.
  6. filter-mapping: 필터 매핑을 설정. 이 요소는 필터를 특정 URL 패턴에 매핑. 여기서는 모든 URL 패턴에 앞서 정의한 encodingFilter 필터를 매핑.

정리
Spring MVC 프레임워크를 사용하는 웹 애플리케이션의 구성을 정의.
Spring의 ContextLoaderListener를 사용하여 애플리케이션 컨텍스트를 로드하고,
DispatcherServlet을 사용하여 클라이언트 요청을 처리하며,
문자 인코딩 필터를 사용하여 문자 인코딩을 처리.

profile
PAy IT forwaRD를 실천하는 프론트엔드 개발자. 근데 이제 백엔드를 곁들인..

0개의 댓글