본문 바로가기

spring

web.xml - Element

  • 자주 사용하는 Element 위주로 정리

<web-app>Element

web.xml의 Root-Element 기능을 담당한다.

xmlns와 servlet의 버전을 설정

<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
    http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
</web-app>

 

<context-param>Element

Servlet context의 parameter를 선언해주는 부분이다.

쉽게 생각하자면 web.xml의 전역 변수 같은 느낌이다.

참고로, <init-param>은 지역변수라고 생각하면 이해가 쉽다.

param-name : context parameter의 이름

param-value : context parameter의 값

	<!-- 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>

 

<listener> Element

Application LIstener Bean을 카리키기 위한 부분으로, 

이 때 해당 Bean은 웹 어플리케이션에 등록 되어있어야 한다.

listener-class : listener bean의 class를 지정해주는 부분

	<!-- spring에서 contextConfigLocation을 설정하기 위한 listener bean 지정 -->
	<!-- Creates the Spring Container shared by all Servlets and Filters -->
	<listener>
		<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
	</listener>

 

<filter> Element

어플리케이션에서 사용하는 filter를 선언하는 부분이다.

어떤 filter를 사용할 것인지 설정하는 부분으로, 대표적으로 encodingFilter가 있다.

filter-name : (Required, unique, filter-mapping) Element와 매핑하기 위한 변수

filter-class : 사용할 클래스의 정규화 된 이름을 나타내는 변수

init-param : filter에서 사용할 name-value 쌍을 선언하는 부분

async-supported: Optional, 선언된 경우 async 방식으로 사용이 가능

	<!-- Encoding 방식을 UTF-8로 하기 위한 Filter -->
    <filter>
		<filter-name>encoding</filter-name>
        <!-- 스프링에서 POST 전송방식의 UTF-8 인코딩 방식 -->
		<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
        <!-- CharacterEncodingFilter는 Http상에서 주고받는는 데이터의 헤더 값을 UTF-8로 인코딩해줌으로서 다국어 지원을 보장해준다.
         어 지원을 보장해 준다. 제대로 되었다면 앞으로 헤더 값으로 주고 받는 데이터들에 대해서는 한글의 사용을 보장 받을 수 있다.-->
		<init-param>
			<param-name>encoding</param-name>
			<param-value>UTF-8</param-value>
		</init-param>
	</filter>

 

<filter-mapping>Element

filter Element가 어떤 filter를 사용할지 설정하는 거였다면,

filter-mapping Element는 설정한 filter를 어디에 적용할 것인지를 URL 또는 Servlet를 통해 선언하는 부분이다.

filter-name : filter Element와 매핑하기 위한 변수

url-pattern : filter를 적용할 url을 선언하는 부분

servlet-name : filter를 적용할 servlet을 선언하는 부분

	<!-- root 이하 모든 url에 이름이 encoding인 filter를 적용 -->
    <filter-mapping>
	    <filter-name>encoding</filter-name>
	    <url-pattern>/*</url-pattern>
	</filter-mapping>
    
---------------------------------------------------------------------------------
    
    <filter-mapping>
		<filter-name>encoding</filter-name>
		<servlet-name>appServlet</servlet-name>
	</filter-mapping>

 

<servlet> Element

Servlet을 선언할 때 사용하는 Element로, 선언해 필요한 정보를 담고 있다. 

흔히 spring에서 DispatcherServlet을 선언할 떄 자주 볼 수 있다.

servlet-name : Required, unique 사용할 때 Servlet의 이름을 지정

servlet-class : 사용할 클래스의 정규화된 이름을 나타내는 변수

init-param : servlet에서 사용할 name-value 쌍을 선언하는 부분

load-on-startup : servlet이 배칠될 때의 우선순위를 지정하기 위한 부분

	<!-- 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과 URL 사이의 매핑을 정의하는 부분이다.

servlet-name : 매핑할 servlet-name을 선언하는 부분

url-pattern : servlet과 매핑할 URL 패턴을 선언하는 부분

	<servlet-mapping>
		<servlet-name>appServlet</servlet-name>
		<url-pattern>/</url-pattern>
	</servlet-mapping>

 

 

※SERVER 폴더의 WEB.XML

 

<welcome-file-list>Element

서버로 요청이 들어 왔을 떄 표시할 welcome-file을 순서대로 정의하는 부분이다.

welcome-file : 적용할 welcome-file의 이름

<!-- index.html, index.htm, index.jsp 의 순서로 호출하고, 없다면 404 페이지를 호출한다. -->
    <welcome-file-list>
        <welcome-file>index.html</welcome-file>
        <welcome-file>index.htm</welcome-file>
        <welcome-file>index.jsp</welcome-file>
    </welcome-file-list>

 

 

 

[출처] https://blog.naver.com/kimjh3661/221505345787