ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • web.xml이란 무엇인가?
    자바웹프로그래밍/전자정부프레임워크-번외 2020. 11. 18. 00:08
    728x90
    반응형

    Web.xml 

    스프링 웹프로그래밍이나 서블릿위주인 웹프로그래밍을 하다보면 web.xml 을 만지는 일들이 있다.

     

    그렇다면 도대체 web.xml이 무엇일까?

     

    web.xml에서 서블릿 맵핑 되는 방법 ,인증이 필요한 URL 등의 정보를 확인한다.

     

    Web.xml은 WebApplication의 Deployment Descriptor(배포 설명자) 로써 XML형식의 파일이다.

     

    모든 Web application은 반드시 하나의 web.xml파일을 가져야하고 위치는 WEB-INF폴더 아래에있다.

     

    web.xml파일의 설정들은 Web Application 시작시 메모리에 로딩된다.

     

    배포 설명자

    웹 애플리케이션의 배포 설명자는 애플리케이션의 클래스,리소스,구성 및 웹 서버가 이를 사용해서 웹 요청을 처리하는 방법을 기술하는곳이다.

     

    애플리케이션에 대한 요청이 수신되면 배포 설명자(web.xml)를 사용하여 요청의 URL을 해당 요청을 처리해야 하는 코드에 매핑한다.

     

    아래의 web.xml에서의 예시에서는 URL경로인  /example  서블릿 클래스 com.example.ExampleServlet에 매핑한다.

     

    예시 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_3_1.xsd" 
             version="3.1">
    
        <!-- 서블릿 선언 -->
        <servlet>
            <servlet-name>exampleServlet</servlet-name>
            <servlet-class>com.example.ExampleServlet</servlet-class>
        </servlet>
    
        <!-- 서블릿 매핑 -->
        <servlet-mapping>
            <servlet-name>exampleServlet</servlet-name>
            <url-pattern>/example</url-pattern>
        </servlet-mapping>
    
        <!-- 필터 선언 -->
        <filter>
            <filter-name>exampleFilter</filter-name>
            <filter-class>com.example.ExampleFilter</filter-class>
        </filter>
    
        <!-- 필터 매핑 -->
        <filter-mapping>
            <filter-name>exampleFilter</filter-name>
            <url-pattern>/*</url-pattern>
        </filter-mapping>
    
        <!-- 리스너 선언 -->
        <listener>
            <listener-class>com.example.ExampleListener</listener-class>
        </listener>
    
        <!-- 초기화 매개변수 -->
        <context-param>
            <param-name>exampleParam</param-name>
            <param-value>exampleValue</param-value>
        </context-param>
    
        <!-- 오류 페이지 설정 -->
        <error-page>
            <error-code>404</error-code>
            <location>/error404.html</location>
        </error-page>
    
        <error-page>
            <exception-type>java.lang.Throwable</exception-type>
            <location>/error.jsp</location>
        </error-page>
    
        <!-- 보안 제약 -->
        <security-constraint>
            <web-resource-collection>
                <web-resource-name>Protected Area</web-resource-name>
                <url-pattern>/secure/*</url-pattern>
            </web-resource-collection>
            <auth-constraint>
                <role-name>admin</role-name>
            </auth-constraint>
        </security-constraint>
    
        <login-config>
            <auth-method>BASIC</auth-method>
            <realm-name>exampleRealm</realm-name>
        </login-config>
    
        <security-role>
            <role-name>admin</role-name>
        </security-role>
    
    </web-app>

     

     

    주요 구성 요소 설명

    1. 서블릿 선언 및 매핑
      • <servlet> 요소는 서블릿을 선언합니다.
      • <servlet-mapping> 요소는 특정 URL 패턴을 서블릿에 매핑합니다.
    2. 필터 설정
      • <filter> 요소는 필터를 선언합니다.
      • <filter-mapping> 요소는 필터를 적용할 URL 패턴을 지정합니다.
    3. 리스너 설정
      • <listener> 요소는 애플리케이션 이벤트를 처리할 리스너를 선언합니다.
    4. 초기화 매개변수
      • <context-param> 요소는 애플리케이션 전역에서 사용할 수 있는 초기화 매개변수를 정의합니다.
    5. 오류 페이지 설정
      • <error-page> 요소는 특정 오류 코드 또는 예외 유형에 대해 사용자 정의 오류 페이지를 지정합니다.
    6. 보안 설정
      • <security-constraint> 요소는 애플리케이션의 보안 제약을 정의합니다.
      • <login-config> 요소는 인증 메서드와 보안 영역을 설정합니다.
      • <security-role> 요소는 애플리케이션에서 사용할 역할을 정의합니다.

     


    Web.xml 에 작성되는 내용

     

    1. ServletContext의 초기 변수

     

    2. 서블릿 및 jsp에 대한 정의 및 맵핑

     

    3. MimeType매핑

     

    4. Session의 대한 유효시간

     

    5. welcome file list

     

    6. 오류 핸들러

    <error-page>
            <error-code>500</error-code>
            <location>/errors/servererror.jsp</location>
        </error-page>

     

    Spring MVC에서의 web.xml 역할

    -DispatcherServlet

    -ContextLoaderListener

    -encodingFilter

     

     

    DispatcherServlet

    - Spring 콘테이너를 생성(컨트롤러의 lifecylce관리)

    - 클라이언트의 요청을 처음으로 받는 클래스

    - 클라이언트의 요청을 가로채서 컨트롤러에 보낸다.

     

    예제

    <servlet>
      <servlet-name>addServlet</servlet-name>
      <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
      <!-- contextLoader가 해당 위치의 설정 파일을 읽어, 해당 파일을 dispatcher servlet으로 만든다. -->
      <init-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>/WEB-INF/addServlet-servlet.xml</param-value>
      </init-param>
      <load-on-startup>1</load-on-startup>
    </servlet>
    
    <!-- /add로 시작하는 url 요청을 받아 addServlet에서 처리한다. -->
    <servlet-mapping>
      <servlet-name>salesServlet</servlet-name>
      <url-pattern>/add</url-pattern>
    </servlet-mapping>
    

     

     

    728x90
    반응형
Designed by Tistory.