본문 바로가기
Spring/Spring

[Spring] Web.xml 설정(세팅)하기

스프링에서 사용되는 web.xml파일은 Deployement Descriptor(배포 서술자)라고 불리어 집니다. 결국 어떤 프로젝트를 배포하게 되면 그 프로젝트에 대한 설정에 대한정보를 가지고 있는 파일이라고 이해하면 되는데 기본적인 설정정보를 가지고 있다보니 모든 Spring프로젝트는  실행되기전에 1차적으로 web.xml을 거쳐가게 됩니다. 그래야 어떠한 설정이 있는지 확인하고 그 설정에 맞게 동작하니깐요.

 

이 포스팅에서는 스프링의 설정값에 대한 정보가 담긴 web.xml파일의 작성법과 각 설정이 어떤한 의미를 가지고 있는지 알아보는 시간을 가지도록 하겠습니다.

 

 

 

 

 

공통부분

<?xml version="1.0" encoding="UTF-8"?>

xml파일이라고 선언하는 부분이며 설정에는 한글이 들어가는 경우가 간혹 있기 때문에 인코딩 속성은 UTF-8을 권장합니다.

 

 

<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee https://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">

<web-app>태그는 web.xml파일의 루트태그 입니다. 따라서 모든 웹 어플리케이션 설정은 <web-app></web-app>안에 기술합니다.

 

 

<display-name>sample</display-name>

 web.xml파일의 제목정도로 해석하면 되는데 보통 프로젝트명을 적습니다.

 

 

<description>sample project</description>

어떤 프로젝트를 위한 배포 서술자인지 상세하게 기록합니다.

 

 

<servlet>
  <servlet-name>dispatcher</servlet-name>
  <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
  <init-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>/WEB-INF/spring/context-servlet.xml</param-value>
  </init-param>
  <load-on-startup>1</load-on-startup>
</servlet>

<servlet-mapping>
  <servlet-name>dispatcher</servlet-name>
  <url-pattern>*.do</url-pattern>
</servlet-mapping>

Dispatcher 서블릿을 설정하는 부분입니다. Dispatcher Servlet에 대한 설명은 따로 기술하지 않겠습니다.
이 설정에서는 *.do에 해당되는 url접근이 발생하는 경우 context-servlet.xml을 Dispatcher Servlet으로 이용하여 동작하도록 설정되었습니다.

 

 

<context-param>
  <param-name>contextConfigLocation</param-name>
  <param-value>/WEB-INF/spring/context-*.xml</param-value>
</context-param>

<context-param>태그를 이용하여 추가적으로 xml설정파일을 지정할 수 있습니다.

 

 

<context-param>
  <param-name>contextConfigLocation</param-name>
  <param-value>classpath*:spring/context-*.xml</param-value>
</context-param>

혹시 Classpath경로의 xml파일에 접근하고 싶다면 위의 코드처럼 경로를 입력하면 됩니다.

 

 

 

 

 

 

 

Filter

<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>
</filter>

<filter-mapping>
  <filter-name>encodingFilter</filter-name>
  <url-pattern>/*</url-pattern>
</filter-mapping>

Spring에서는 어떠한 로직이 실행되기전 전처리 작업으로 지정할 수 있는 기능이 Filter, Interceptor, AOP 이렇게 3가지가 있습니다. 그중에서 가장 먼저 실행되는(가장 로우단에서 실행되는) 전처리 작업이 Filter입니다. 위에서 언급한 바와 같이 Spring의 시작은 Web.xml이기 때문에 가장 먼저 실행되기 위해서는 web.xml에 설정을 해야 합니다. 따라서 가장 먼저 동작하는 Filter의 경우 web.xml에 설정을 하며 Filter에 대한 자세한 설명은 별도의 포스팅을 통해서 다뤄보도록 하겠습니다.

 

 

 

 

 

 

Session-config

<session-config>
  <session-timeout>30</session-timeout>
</session-config>

web.xml에서는 세션의 유효시간도 설정이 가능합니다. 단위는 분이며 30으로 설정할 경우 세션의 유효시간은 30분이 됩니다.

 

 

 

 

 

 

Welcome Page

<welcome-file-list>
  <welcome-file>/WEB-INF/jsp/index.jsp</welcome-file>
</welcome-file-list>

정리하다 보니 web.xml에서 가능한 설정들이 정말 많네요...
<welcome-file-list> 태그는 서버의 root주소를 입력하여 접근했을 경우 해당 페이지를 보여줍니다. 

 

 

 

 

 

Error-page

<error-page>
  <exception-type>java.lang.Throwable</exception-type>
  <location>/WEB-INF/jsp/error/error.jsp</location>
</error-page>
<error-page>
  <error-code>404</error-code>
  <location>/WEB-INF/jsp/error/404.jsp</location>
</error-page>
<error-page>
  <error-code>500</error-code>
  <location>/WEB-INF/jsp/error/500.jsp</location>
</error-page>

에러페이지에 대한 설정입니다. 위의 설정을 기준으로 404에러가 발생할 경우 404.Jsp페이지를 사용자에게 보여줍니다.

 

댓글