
Java Servlet은 서버에서 실행되는 Java 프로그램으로, 웹 요청을 처리하는데 사용된다.
Servlet은 Java기반의 웹 어플리케이션에서 동적 웹 컨텐츠를 생성하거나 처리하는데 중요한 역할을 한다.
웹 서버는 클라이언트로부터 요청을 받으면 해당 요청을 Servlet으로 전달하고, Servlet은 요청을 처리한 후 그 결과를 클라이언트에게 응답으로 반환한다.
Web Application Architecture
웹 어플리케이션 아키텍처는 웹 어플리케이션을 구성하는 컴포넌트들이 어떻게 설계되고, 서로 어떻게 상호작용하는지를 설명하는 구조이다
Client - Server Architecture vs Web Application Architecture
ㅤ | Client - Server Application | Web Application |
아키텍처 | 2 tier | multi tier |
상호작용 | 사용자의 인터페이스 또는 어플리케이션 | 웹 브라우저 |
실행 | 어플리케이션 사전 설치 | 웹 브라우저에서 직접 실행 |
쿠키 | none | required |
보안 | 상대적으로 사용자가 적기 때문에 위험이 적음 | 사용자 수가 많을수록 상대적으로 높은 위험 |
접근 | 제한적 | anywhere |
Client-Server Application과 Web Application의 주요 차이점:
- 아키텍처: Client-Server는 2-tier 구조를 가지는 반면, Web Application은 multi-tier 구조를 가진다.
- 사용자 인터페이스: Client-Server는 전용 애플리케이션을 통해 상호작용하지만, Web Application은 웹 브라우저를 통해 접근한다.
- 설치 및 실행: Client-Server는 사전 설치가 필요하지만, Web Application은 브라우저에서 바로 실행 가능하다.
- 접근성: Client-Server는 제한적인 접근성을 가지는 반면, Web Application은 인터넷이 가능한 어디서나 접근할 수 있다.
- 보안: Client-Server는 상대적으로 적은 사용자로 인해 위험이 낮지만, Web Application은 많은 사용자로 인해 보안 위험이 더 높을 수 있다.
Web Server
웹 서버는 웹 브라우저와 같은 클라이언트로부터 HTTP 요청을 받아들이고, HTML문서와 같은 웹 페이지를 반환하는 컴퓨터 프로그램이다
웹서버의 종류로는 apache, nginx 등이 있다.
CGI
Common Gateway Interface의 약자로 웹 서버가 외부 프로그램을 실행할 수 있도록 해주는 인터페이스 명세
환경변수나 표준입출력을 다룰 수 있는 프로그램 언어라면 어떤 언어든지 확장하여 이용이 가능하다.
실행속도나 텍스트 처리의 용이함 등의 이유로 perl이나 python, ruby 등의 스크립트 언어를 주로 사용한다.
스크립터 언어란?
Java, C와 같은 컴파일언어와 반대되는 개념이다.
스크립트 언어는 코드가 사전에 컴파일되지 않고 인터프리터에 의해 즉시 실행되는 프로그래밍 언어를 말한다.
주요 특징:
- 인터프리터 방식 : 스크립트 언어는 코드를 한 줄씩 해석하면서 실행되는 방식을 사용한다. 즉 프로그램 실행 전에 컴파일 단계가 필요하지 않으며, 소스 코드가 바로 실행된다.
- 동적 타이핑 : 스크립트 언어는 변수의 자료형을 명시적으로 지정하지 않고 실행 시에 자동으로 결정된다. 이는 코드 작성이 간편하다는 장점이 있지만 실행 시 오류가 발생할 가능성이 높아진다.
- 빠른 개발과 실행 : 스크립트 언어는 보통 구문이 단순하고 코드가 짧으며, 실행에 필요한 초기 설정이 적어 빠르게 개발할 수 잇다. 주로 작은 작업이나 자동화 스크립트, 웹 어플리케이션에서 많이 사용된다.
- 임베디드 가능성 : 스크립트 언어는 다른 어플리케이션이나 시스템에 쉽게 포함되어 사용될 수 있다.
Java 진영에서의 CGI 프로그램은 JCGI가 있다.
Fast CGI
CGI의 단점은 웹 서버가 HTTP 요청을 처리할 때마다 새로운 프로세스를 생성하는 구조이다.
상대적으로 느리며, 요청이 많을 경우 많은 시스템 자원을 소모하게 된다.
때문에 Fast CGI가 나타나게 되었다.

Fast CGI는 하나의 큰 프로세스로 동작한다.
Servlet
Java 진영에서 동적 웹 페이지를 만들 때 사용되는 기술
쉽게 말해, Servlet은 Java로 만든 CGI 프로그램 이라고 생각하면 된다.
CGI의 단점 해결
- 요청마다 새로운 프로세스가 생성 → 멀티 스레드로 해결
- 스레드 생성과 관리 → 컨테이너
Servlet Architecture

Servlet Container
- 웹 컨테이너는 웹 서버의 컴포넌트 중 하나로 자바 서블릿과 상호작용한다.
- 웹 컨테이너는 서블릿의 생명주기를 관리하고, URL과 특정 서블릿을 매핑하며 URL 요청이 올바른 접근 권한을 갖도록 보장한다.
- 웹 컨테이너는 서블릿, JSP파일, 그리고 서버-사이드 코드가 포함된 다른 타입의 파일들에 대한 요청을 다룬다.
- 웹 컨테이너는 서블릿 객체를 생성하고, 서블릿을 로드와 언 로드하며, 요청과 응답 객체를 생성하고 관리하고, 다른 서블릿 관리 작업을 수행한다.
- 웹 컨테이너는 웹 컴포넌트 Java EE 아키텍처 제약을 구현하고, 보안, 병행성(concurrency), 생명주기 관리, 트랜잭션, 배포 등 다른 서비스를 포함하는 웹 컴포넌트의 실행 환경을 명세한다.
Share article