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 |