on
서블릿(Servlet) 프로그래밍
서블릿(Servlet) 프로그래밍
서블릿(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이다.
from http://wanbaep.tistory.com/15 by ccl(A) rewrite - 2021-12-11 18:27:11