유혁의 개발 스토리

[Spring] web.xml 정리 본문

Spring

[Spring] web.xml 정리

유혁. 2021. 11. 12. 17:34

1. web.xml 이란 

web.xml 은 Web Application Deployment Descriptor이며 xml형식의 파일이다. (DD라고도 부름)

WEB-INF 하위에 위치하며, 톰캣 구동 시, WEB-INF/web.xml을 읽어 Web Application(톰캣)의 설정을

적용하기 위해 존재한다. 

 

 

2. web.xml 기본설정

 

직접 web.xml 을 살펴보면서 정리해보자.

참고로 필자는 기본적인 web.xml 설정방법 자료들이 너무 없어 한번에 정리해보려한다. 

 

* 프로젝트 생성 시 web.xml 파일

<?xml version="1.0" encoding="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">

	<!-- The definition of the Root Spring Container shared by all Servlets and Filters -->
	<context-param>
		<param-name>contextConfigLocation</param-name>
		<param-value>/WEB-INF/spring/root-context.xml</param-value>
	</context-param>
	
	<!-- Creates the Spring Container shared by all Servlets and Filters -->
	<listener>
		<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
	</listener>

	<!-- Processes application requests -->
	<servlet>
		<servlet-name>appServlet</servlet-name>
		<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
		<init-param>
			<param-name>contextConfigLocation</param-name>
			<param-value>/WEB-INF/spring/appServlet/servlet-context.xml</param-value>
		</init-param>
		<load-on-startup>1</load-on-startup>
	</servlet>
		
	<servlet-mapping>
		<servlet-name>appServlet</servlet-name>
		<url-pattern>/</url-pattern>
	</servlet-mapping>

</web-app>

 

Spring Legacy Project(MVC) 를 생성하면 초기에 만들어지는 web.xml 이며, 기본적인 구성을 해보려한다.

 

 

 

* web.xml 

<?xml version="1.0" encoding="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">

	<!-- Root Context 경로로 서버의 주소만을 입력하여 접근헀을 때 가장 처음으로 띄워줄 경로를 설정하는 태그 -->
	<!-- 순차적으로 진행하며, 페이지가 없는경우 다음 태그로 넘어감 -->
	<welcome-file-list>
    	<welcome-file>index.jsp</welcome-file>
    	<welcome-file>index2.jsp</welcome-file>
    	<welcome-file>index3.jsp</welcome-file>
  	</welcome-file-list>


	<!-- filter는 Request 와 servlet 사이에 위치하여 요청과 결과에대한 정보를 알맞게 변경이 가능하다. -->
	<!-- 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>
	
	
	<!-- Service, DAO, DB등 비즈니스 로직 관련설정 -->
	<!-- Spring 실행과 동시에 의존주입이 필요한 설정들 -->
	<!-- root-context 를 별도 경로로 지정 -->
	<context-param>
		<param-name>contextConfigLocation</param-name>
		<param-value>classpath*:config/spring/context-*.xml</param-value>
	</context-param>
	
	
	
	<!-- Creates the Spring Container shared by all Servlets and Filters -->
	<!-- 스프링 컨테이너 및 ApplicationContext(IoC) 생성 -->
	<listener>
		<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
	</listener>



	<!-- Servlet 관련 객체 정의  -->
	<!-- Controller, 어노테이션, ViewResolver, Intercepter, MultipartResolver 등  --> 
	<servlet>
		<servlet-name>appServlet</servlet-name>
		<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
		<init-param>
			<param-name>contextConfigLocation</param-name>
			<param-value>/WEB-INF/spring/appServlet/servlet-context.xml</param-value>
		</init-param>
		<load-on-startup>1</load-on-startup>
	</servlet>
		
	<servlet-mapping>
		<servlet-name>appServlet</servlet-name>
		<url-pattern>/</url-pattern>
	</servlet-mapping>

</web-app>

 

각각 자세한 역할은 별도 글로 진행하겠습니다.