WEB개발/WEB, WAS

WEB.XML Config (context-param, init-param, web-app ... )

wooyeon06 2021. 7. 23. 09:32

 

1. 컨텍스트 초기화 파라미터(<context-param>)

 

- context-param은 init-param 그 이상으로 전역 즉 모든 서블릿에서 사용할 수 있는 파라미터 값이다.

- <web-app>항목내에 작성

- 예) DD상에 작성방법

<web-app ...>
    <context-param>
        <param-name>paraname</param-name>
        <param-value>paravalue</param-value>
    </context-param>
</web-app>

 

- 서블릿 상에서 호출시

: getServletContext().getInitParameter("paraname");

- 범위

: 웹 애플리케이션에 존재하는 어떤 서블릿이나 jsp모두

 

2. 서블릿 초기화 파라미터(<init-param>)

-해당 파라미터 값은 지정해준 서블릿 내에서만 쓸 수 있는 값이다.

- <servlet>항목 안에 작성

- 예) DD상에 작성방법

<servlet>
    <servlet-name>servletname</servlet-name>
    <servlet-class>servletclass</servlet-class>
    <init-param>
        <param-name>paraname</param-name>
        <param-value>paravalue</param-value>
    </init-param>
</servlet>

 

- 서블릿 상에서 호출시

getServletConfig().getInitParameter("foo");

 

- 범위

<init-param>항목을 표함하고 있는 서블릿만

 

 

 

3. web-app 요소

web.xml 파일의 최상위 요소는 <web-app>입니다. 이 요소는 웹 애플리케이션에 대한 전반적인 설정을 포함합니다.

 

01. 톰캣 버젼 9.0, 10.0

<?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">
</web-app>

 

서블릿스펙 톰캣버전 최소자바버젼 jsp스펙 비고
5.0 10.0 8이상 3.0 01
4.0 9.0 8이상 2.3 01

 

주요 특징:

  • HTTP/2 지원: 서블릿 4.0은 HTTP/2를 지원합니다. HTTP/2는 HTTP/1.1의 한계점을 극복하며 성능을 개선하기 위한 여러 기능을 제공합니다.
    • 멀티플렉싱: 하나의 연결에서 여러 요청/응답을 처리할 수 있어 지연 시간을 줄이고, 대역폭을 효율적으로 사용할 수 있습니다.
    • 헤더 압축: HTTP/2는 헤더 압축을 통해 대역폭을 절약합니다.
  • 서블릿 컨테이너의 비동기 처리 개선: 서블릿 3.0에서 도입된 비동기 처리가 더욱 향상되었습니다.
  • 웹 애플리케이션에서의 성능 최적화 및 향상:
    • HTTP/2를 통해 웹 애플리케이션의 성능을 크게 개선할 수 있으며, 특히 대용량 웹 애플리케이션에서 효과적입니다.

02. 톰캣 버젼 8.0

<?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">
</web-app>
서블릿스펙 톰캣버전 최소자바버젼 jsp스펙 비고
3.1 8.5 7이상 2.3 02
3.1 8.0 7이상 2.3 02

 

주요 특징:

  • Servlet 3.0의 기능 강화 및 개선:
    • WebSocket API: 실시간 양방향 통신을 지원하는 WebSocket을 서블릿 스펙에 포함시켰습니다. WebSocket을 사용하면 클라이언트와 서버 간의 지속적인 연결을 유지하면서 데이터가 실시간으로 전송될 수 있습니다.
    • Java API for WebSocket: 이 API는 javax.websocket 패키지에 포함됩니다.
  • 파일 업로드 API 개선: 서블릿 3.0에서 제공했던 파일 업로드 API의 개선과 확장.
  • 비동기 작업 및 최적화: 비동기 작업에 대한 성능 최적화가 이루어졌습니다.

 

03. 톰캣 버젼 7.0

<?xml version="1.0" encoding="UTF-8"?>
<web-app 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_3_0.xsd"
         version="3.0">
</web-app>

 

 

서블릿스펙 톰캣버전 최소자바버젼 jsp스펙 비고
3.0 7.0 6이상 2.2 03

 

주요 특징:

  • 주석 기반 설정의 강력한 지원 (Annotations):
    • 서블릿, 필터, 리스너, 세션 타임아웃 등 설정을 주석으로 할 수 있게 되었습니다.
    • 예: @WebServlet, @WebFilter, @WebListener, @WebInitParam
  • web.xml의 최소화: web.xml 파일에서 모든 설정을 명시할 필요 없이 주석으로 설정할 수 있게 되어, web.xml은 선택적이 되었습니다. web.xml은 여전히 존재하지만, 설정이 간결해졌습니다.
  • 비동기 서블릿 처리 (Asynchronous Servlet): 서블릿이 비동기 방식으로 요청을 처리할 수 있는 기능이 도입되었습니다. 이를 통해 긴 시간 동안 블로킹되지 않도록 할 수 있습니다.
    • 예: request.startAsync(), AsyncContext
  • 파일 업로드 API (Multipart Config): 서블릿 3.0은 파일 업로드를 위한 @MultipartConfig 주석을 추가하여, 큰 파일을 업로드할 때 유용하게 사용됩니다.
    • 예: @MultipartConfig(maxFileSize = 1024 * 1024 * 10)
  • <servlet>와 <filter>의 매핑: 서블릿과 필터의 url-pattern 외에도 dispatcher-types를 정의하여 요청 유형을 제어할 수 있었습니다.

 

 

4. servlet 및 servlet-mapping 요소

 

서블릿 정의

<servlet>
    <servlet-name>MyServlet</servlet-name>
    <servlet-class>com.example.MyServlet</servlet-class>
</servlet>
  • <servlet-name>: 서블릿의 이름을 정의합니다.
  • <servlet-class>: 서블릿 클래스의 전체 경로를 지정합니다.

서블릿 매핑

<servlet-mapping>
    <servlet-name>MyServlet</servlet-name>
    <url-pattern>/myServlet</url-pattern>
</servlet-mapping>
  • <servlet-name>: 매핑할 서블릿의 이름을 지정합니다.
  • <url-pattern>: 클라이언트 요청 URL에 매핑될 URL 패턴을 지정합니다.

5. filter 및 filter-mapping 요소

 

필터 정의

<filter>
    <filter-name>MyFilter</filter-name>
    <filter-class>com.example.MyFilter</filter-class>
</filter>
  • <filter-name>: 필터의 이름을 정의합니다.
  • <filter-class>: 필터 클래스의 전체 경로를 지정합니다.

필터 매핑

<filter-mapping>
    <filter-name>MyFilter</filter-name>
    <url-pattern>/myServlet</url-pattern>
</filter-mapping>
  • <filter-name>: 매핑할 필터의 이름을 지정합니다.
  • <url-pattern>: 클라이언트 요청 URL에 매핑될 URL 패턴을 지정합니다.

 

6. listener 요소

리스너는 특정 이벤트(애플리케이션 시작, 종료 등)에 반응하여 동작하는 객체입니다. 리스너를 정의하려면 <listener> 요소를 사용합니다.

<listener>
    <listener-class>com.example.MyListener</listener-class>
</listener>
  • <listener-class>: 리스너 클래스의 전체 경로를 지정합니다.

주로 애플리케이션, 세션 또는 서블릿 컨텍스트의 라이프 사이클 이벤트를 감지하고 처리하는데 사용됩니다.

 

 

7. welcome-file-list 요소

애플리케이션이 URL 경로에 대한 요청을 받을 때, 기본 페이지를 지정하려면 welcome-file-list를 사용합니다. 예를 들어, 기본 페이지가 index.html 또는 index.jsp일 수 있습니다.

<welcome-file-list>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.jsp</welcome-file>
</welcome-file-list>
  • <welcome-file>: 클라이언트가 요청한 디렉토리에 기본으로 표시할 파일을 지정합니다.

8. error-page 요소

특정 예외가 발생했을 때 클라이언트에게 보여줄 에러 페이지를 정의하려면 <error-page>를 사용합니다.

<error-page>
    <exception-type>java.lang.NullPointerException</exception-type>
    <location>/errorPage.jsp</location>
</error-page>
  • <exception-type>: 특정 예외 유형을 정의합니다.
  • <location>: 예외가 발생하면 리디렉션될 URL 경로를 지정합니다.

또는 HTTP 상태 코드에 따라 에러 페이지를 정의할 수 있습니다:

<error-page>
    <error-code>404</error-code>
    <location>/404.html</location>
</error-page>
  • <error-code>: 특정 HTTP 오류 코드(예: 404)를 지정합니다.

9. session-config 요소

세션 관련 설정을 정의하려면 <session-config>를 사용합니다. 예를 들어, 세션 타임아웃 값을 설정할 수 있습니다.

<session-config>
    <session-timeout>30</session-timeout>
</session-config>
  • <session-timeout>: 세션 타임아웃 시간을 분 단위로 설정합니다.

10. mime-mapping 요소

파일 확장자에 대한 MIME 타입을 설정할 수 있습니다. 예를 들어, .xyz 확장자를 가진 파일에 대해 application/xyz MIME 타입을 설정할 수 있습니다.

<mime-mapping>
    <extension>xyz</extension>
    <mime-type>application/xyz</mime-type>
</mime-mapping>
  • <extension>: 파일 확장자를 정의합니다.
  • <mime-type>: 해당 확장자의 MIME 타입을 정의합니다.

 

 


https://sayit.tistory.com/entry/버전Version별로-DTD선언-정리-in-webxml