티스토리 뷰
서블릿(Servlet) 프로그래밍
학부시절 웹 프로그래밍 교육 때 처음 서블릿은 종종 들어왔던 단어이다. 자바 웹과 관련된 용어 정도로만 알고 있었고, 정확한 정의를 이야기 할 수 없었다. 이번 포스팅을 통해서 좀 더 정확하게 내용을 정리해보려 한다.
먼저 Web Application 의 동작 순서를 아래 그림과 함께 살펴보자.

사용자가 브라우저에 요청을 입력하면 브라우저는 이를 HTTP Protocol의 요청으로 만들어서 웹 서버에 요청을 보낸다. 웹 서버는 받은 요청에 따라서 프로그램을 실행시킨다. 프로그램은 실행된 결과를 다시 웹 서버에 리턴하고 웹 서버는 프로그램에게 받은 결과를 HTTP Protocol의 응답으로 만들어서 브라우저에 응답한다. 최종적으로 사용자는 요청을 확인 할 수 있다.
위와 같은 과정에서 웹 서버와 프로그램 사이에서 데이터를 주고 받는 규칙이 있는데 이를 CGI(Common Gateway Interface) 규칙이라고 한다. 1) 웹 서버에 의해 실행되며, 2) CGI 규칙에 따라 웹 서버와 데이터를 주고 받도록 작성된 프로그램을 CGI 프로그램이라고 한다.
CGI 프로그램은 다양한 언어로 작성 될 수 있다. C/C++, Java 와 같은 컴파일 언어 혹은 php, Python 등과 같은 인터프리터 언어 등으로 작성 될 수 있으며, 언어적 특성에 따른 차이는 다양하겠지만 간단하게만 살펴보면 컴파일 언어의 빠른 실행속도와 인터프리터 언어의 변경용이성 정도를 볼 수 있다.
그 중에서 Java로 작성된 CGI프로그램을 서블릿(Servlet) 이라고 한다. 좀 더 자세하게 이야기 하면, 자바 서블릿은 웹 서버와 직접 데이터를 주고 받지 않고 전문 프로그램에 의해 관리 되는데, 이를 서블릿 컨테이너라고 한다. 즉, 아래와 같은 구조로 데이터를 주고 받는다.

위 그림을 보면 웹 서버는 서블릿 컨테이너와 CGI규칙으로 데이터를 주고 받고, 서블릿 컨테이너와 서블릿은 Servlet 규칙으로 데이터를 주고 받는다. 여기서 우리가 서블릿 프로그래밍을 한다는 것은 Servlet 규칙 즉 인터페이스를 구현하는 것이다.
지금까지의 용어를 정리해보자면, 아래와 같이 정리해 볼 수 있다.
서블릿 컨테이너 - 서블릿의 생성, 실행 그리고 소멸 등 LifeCycle 을 관리하는 CGI 프로그램이다.
서블릿 - Servlet 인터페이스를 구현한 프로그램으로 서버측 프로그램이다.
Servlet 이라는 단어는 Server + Applet 의 합성어로 클라이언트에서 서비스를 제공하는 작은 단위의 서버 애플리케이션을 의미한다.
Applet 은 Application과 작은을 의미하는 ~let 접미사의 합성어로 작은 애플리케이션을 의미한다.
이쯤에서 한가지 더 궁금해지는 단어가 있다. 그러면 WAS(Web Application Server) 는 무엇일까. 위에서 얘기한 서블릿 컨테이너와 서블릿이 WAS인걸까? 결과부터 얘기하자면, 맞다.
클라이언트 서버 구조에서 서버쪽 애플리케이션의 LifeCycle 을 관리하는 프로그램을 Application Server 인데, 그 중 서블릿 그리고 서블릿 컨테이너와 같이 웹 기술을 기반으로 동작되는 애플리케이션이 Web Application Server 즉, WAS이다.
'BackEnd > Jsp Servlet' 카테고리의 다른 글
| Intellij Servlet 프로젝트 생성 후 war 배포하기 (0) | 2021.12.27 |
|---|---|
| 웹 애플리케이션 디렉토리 구조 (0) | 2021.12.14 |
| HTTP 프로토콜 살펴보기 (0) | 2021.07.07 |
| 애플리케이션의 변화 과정 (데스크톱 to 웹 애플리케이션) (0) | 2021.06.21 |
- Total
- Today
- Yesterday
- 웹 애플리케이션
- Java 란
- DD파일
- ServiceMonitor
- Java 장단점
- Spring Cloud Stream
- 애플리케이션 변화 과정
- OneToOne
- consumer
- minikube node add
- Servlet
- 특정 ip
- WEB-INF
- minikube
- 서버 클라이언트
- ExpectedException
- Java 특징
- node add
- 애노테이션 프로세서
- MySQL 외부 IP
- Prometheus Operator
- kubernetes
- Kafka
- StreamBridge
- springboot3.x
- 데스크톱 애플리케이션
- cpus
- docker-compose
- Servlet Container
- producer
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | 7 |
| 8 | 9 | 10 | 11 | 12 | 13 | 14 |
| 15 | 16 | 17 | 18 | 19 | 20 | 21 |
| 22 | 23 | 24 | 25 | 26 | 27 | 28 |
