Servlet

: 자바 기반의 웹 애플리케이션 프로그래밍 기술로, 클라이언트의 요청을 처리하고 동적 웹 페이지를 생성하는 서버 측 프로그램

 

- 특징

     - 입출력을 HTTP 프로토콜의 요청, 응답 형태로 다룬다.

     - 서블릿 컨테이너라는 실행 환경에서만 동작 가능하다.

     - 필요에 따라 각각 다른 기능을 담당하는 서블릿이 여러 개 있을 수 있다.(로그인, 회원가입 등...)

 

- 필요성

     - 서블릿 지원하는 WAS 사용 시 비즈니스 로직 실행 작업만 하면 된다.

서블릿 미지원 서버 측 처리 작업 서블릿 지원 서버 측 처리 작업
1. 서버와 TCP/IP 연결 1. 비즈니스 로직 실행
2. HTTP Request Message를 필요한 형태로 변환해 읽기
3. 분석 결과를 통해 프로세스 실행
4.비즈니스 로직 실행
5. HTTP Response Message 생성
6. 응답 전달
7. 연결 종료

 

- 서블릿 생명 주기

     - 서블릿 컨테이너가 서블릿을 생성, 관리한다.

     - WAS 종료 시 서블릿도 함께 종료된다.

// 개발자가 직접 인스턴스화 해서 사용하지 않는다.

 

- 서블릿 컨테이너

1. 서블릿 초기화, 생성, 관리, 호출, 종료 역할을 수행한다.

     - 서블릿 객체를 싱글톤으로 관리

2. 동시 요청 처리를 위해 멀티 스레드를 지원한다.

 

- 서블릿의 동작 원리

1. 사용자의 URL 요청(브라우저에 URL 입력)

     - 웹서버: 정적 리소스는 직접 처리, 서블릿/JSP 처리가 필요한 요청은 WAS로 전달

2. request, response 객체 생성

     - 서블릿 컨테이너(웹 컨테이너):  HTTP 요청 처리 위한 request 객체, HTTP 응답 처리 위한 response 객체 생성

     // 서블릿 컨테이너: 서블릿의 생명주기를 관리하는 WAS의 한 구성요소

3. 서블릿 매핑 확인

     - 서블릿 컨테이너: 배포서술자를 참조해 요청을 처리할 서블릿 클래스 결정 → 요청을 서블릿 컨테이너로 전달

     // 배포서술자: URL과 서블릿 클래스를 미리 매핑시켜 놓은 것(web.xml 또는 애노테이션)

4. 서블릿 인스턴스 확보 및 초기화

     1) 해당 서블릿 클래스가 웹 컨테이너에서 실행된 적 없거나 메모리에 생성된 인스턴스(프로세스) 없음

          => 새로 인스턴스 생성(메모리에 로드), init() 호출해 초기화

     2) 해당 서블릿 클래스의 인스턴스 있음(메모리에 이미 로드되어 있음)

          => 기존 객체 재활용, 요청 처리용 스레드 하나 생성

// init()는 서블릿 당 한 번씩만 호출 ∵ 서블릿 인스턴스는 웹 컨테이너 당 하나만 존재  

5. service() 메서드 호출과 서블릿 클래스 실행

     - 스레드에서 service(request, response) 호출

     // HTTP Method에 따라 다른 함수 호출

          1) GET=> 서블릿 클래스의 doGet(request, response)가 호출

          2) POST=> 서블릿 클래스의 doPost(request, response)가 호출

// 개발자가 doGet(), doPost()에 동적 페이지 생성 로직을 작성(오버라이드)

6. 비즈니스 로직 실행 및 응답 작성

     - doGet() / doPost() 호출돼 사용자 요청에 따른 동적 웹 페이지 생성, DB 조회 등의 로직 수행 후 response 객체에 담음

7. 응답과 스레드의 반환

     → 웹 컨테이너: response 객체를 HTTP 응답 메세지 형태로 변환, 웹서버로 전송 

      → 웹 서버: 전송받은 HTTP 응답 메시지를 브라우저로 전송

      → 사용 끝난 request, response 객체 소멸(GC), 스레드 종료

      → 사용자: 브라우저 통해 동적 생성된 페이지 받아보게 됨

 

 

웹 앱 디렉토리로 인식 되기 위한 구조

     - classes: 실행될 클래스가 존재 // 서블릿 실행에 필수적인 디렉터리

     -  web.xml: 서블릿 배포에 관한 정의 설정 // 서블릿 실행에 필수적인 디렉터리

     -  src: 소스파일 저장 폴더

     -  WEB-INF/lib: WEB-INF 디렉터리 밑에 lib 디렉터리 생성 후 라이브러리 파일을 위치시키면 서블릿에서

해당 라이브러리 파일을 인식 가능

'CS > Network' 카테고리의 다른 글

JWT 토큰이란?  (2) 2025.05.31
Web Server, WAS  (1) 2025.05.06
HTTP API 설계: RESTful API, Maturity Model  (0) 2025.05.06
HTTP  (1) 2025.05.06
프로토콜과 계층 구조(OSI 7계층 모델)  (0) 2025.05.05

+ Recent posts