이것 저것 개발 공부/Servlet

[Servlet] Servlet 기초 완벽 가이드 | 동작 방식과 DD(web.xml) 설정법

crushed-taro 2025. 5. 7. 21:45
728x90
반응형

[Servlet] 초보 개발자를 위한 Servlet 이해하기 | 웹 서버와 클라이언트 사이

 

[Servlet] 초보 개발자를 위한 Servlet 이해하기 | 웹 서버와 클라이언트 사이

1. Servlet1. Network 통신1. Server-client Model서버는 특정 서비스를 제공하는 컴퓨터를 말하며, 클라이언트는 해당 서비스를 이용하는 사용자를 의미한다. 2. Servlet의 종류Web Server : 웹 브라우저와 HTTP 프

crushed-taro.tistory.com

 

1. Servlet

1. Servlet 개요

1. Servlet이란

  • Server + Applet의 합성어로, JAVA 언어를 이용하여 사용자의 요청을 받아 처리하고 처리 결과를 다시 사용자에게 전송하는 역할의 Class 파일을 말한다.
    • Applet = Application + let (작은) = 작은 애플리케이션
  • 웹에서 동적인 페이지를 java로 구현한 서버측 프로그램으로 보면 된다.
  • 관련 패키지와 클래스는 tomcat에서 제공하는 API문서에서 확인 가능하다.
 

Overview (Servlet 5.0 API Documentation - Apache Tomcat 10.0.27)

The jakarta.servlet.http package contains a number of classes and interfaces that describe and define the contracts between a servlet class running under the HTTP protocol and the runtime environment provided for an instance of such a class by a conforming

tomcat.apache.org

 

2. Servlet 역사

  • Java 언어의 창시자인 제임스 고슬링(James Gosling)은 1995년 자바를 발표하며 자바로 구현할 수 있는 서버 프로그래밍 기술에 대해서도 염두에 두고 있었지만, 해당 개념이 실제 구현이 가능한 정도로 제품화 되지 않은 상태였다.
  • 당시 Sun사에서는 이를 서버로 구현할 수 있는 제품이 없어 잠시 미룰 수 밖에 없었다. 즉, Java EE Platform이 제품화 되어 있지 않은 시기의 이야기인 것이다.
  • 얼마 뒤, .Java 팀의 일원이었던 파바니 디완지(Pavni Diwanji)는 자바 서버 기술에 대한 필요성을 느껴 Servlet 개념을 고안하였고, 이 개념을 토대로 프로젝트를 진행하여 Servlet 구현 및 제품화에 성공하였다.
  • 그리고 이 기술은 1997년 6월에 Servlet 1.0을 공식 발표하면서 Java EE의 제품화에 포함되었다.

 

3. Servlet 버전 변천사

Servlet 사진 1

 

4. Servlet 설계 규약

  • 모든 Servlet은 jakarta.servlet.Servlet interface를 상속 받아 구현한다.
  • Servlet 구현 시 Servlet interface와 ServletConfig interface를 jakarta.servlet.GenericServlet에 구현한다.
  • HTTP 프로토콜을 사용하는 Servlet은 HttpServlet Class를 상속 받는다.
  • (jakarta.servlet.http.HttpServlet Class는  jakarta.servlet.GenericServlet를 상속받은 Class이다.)
  • Servlet의 Exception을 처리하기 위해서는 jakarta.servlet.ServletException을 상속 받아야 한다.

 

2. Servlet 동작 구조

1. Servlet의 동작 구조

Setvlet 사진 2

 

2. Servlet Container란

  • 웹 서버 또는 응용 프로그램 서버의 일부로, 웹 서버에서 온 요청을 받아 Servlet class를 관리하는 역할(= 생명 주기 관리)을 한다.
  • Servlet에 대한 Container 설정은 Deployment Descriptor(web.xml) 파일을 이용한다.
    • 쉽게 말해 Servlet을 포함하고 있는 Container가 Servlet Container 이다.
    • Tomcat의 핵심이 바로 이 Servlet Container이다.
    • 작성한 Servlet class를 보관하고, 특정 요청에 따라 Servlet을 결정해서 객체를 생성하거나 이미 생성된 경우 service() method를 호출하여 Servlet이라는 작은 프로그램을 실행한다.
    • Tomcat을 종료하면 Servlet이 전부 소멸하기 때문에 자동으로 destroy() method를 호출한다.

 

3. Deployment Descriptor(DD)

1. 배포서술자

  • Application에 대한 전체 설정 정보를 가지고 있는 파일로, XML 형식 파일이며 요소(= 태그)로 이루어져 있다.
  • 파일 내 설정 정보를 가지고 웹 컨테이너가 Servlet을 구동한다.
    • 설정 정보
      • Servlet 정의 및 Servlet 초기화 파라미터
      • Session 설정 파라미터
      • Servlet-jsp mapping 및 MIME type mapping
      • 보안 설정
      • Welcome file list 설정
      • Error page list, resources, 환경변수
    • 파일 위치: Application 폴더 > webapp 폴더 > WEB-INF 폴더 > web.xml 파일 → MyWebApp/src/main/webapp/WEB-INF/web.xml

 

2. DD 파일 세부 내용

  • <web-app> : 루트 속성, 문법 식별자 및 버전 정보를 속성 값으로 설정
  • <context-param> : 웹 어플리케이션에서 공유하기 위한 파라미터 설정
  • <mime-mapping> : 특정 파일 다운로드 시 파일이 깨지는 현상 방지
  • <servlet>~<servlet-class> / <servlet-mapping> : Servlet mapping
  • <servlet>~<servlet-class> : 컨테이너에 Servlet 설정
    • 예시) default : 공유자 원 제공 및 디렉토리 목록 제공,
    • jsp : jsp 컴파일과 실행 담당
  • <welcome-file-list> : 시작 페이지 설정
  • <filter> : 필터 정보 등록
  • <error-page> : 에러 발생 시 안내 페이지 설정
  • <session-config> : session 기간 설정
  • <listener> : 이벤트 처리 설정 (6가지)
728x90
반응형