[Web] 서블릿 API 계층 구조와 기능

2024. 8. 5. 22:04자바 웹 개발/서블릿 기초

서블릿이란?

초기 동적 웹 페이지는 서블릿(자바로 만든 CGI프로그램)을 이용해서 구현하였다. 서블릿은 서버쪽에서 실행되면서 클라이언트의 요청에 따라 동적으로 서비스를 제공하는 자바 클래스이다. 서블릿은 서버에서 동적으로 요청과 응답을 처리할 수 있는 API를 제공한다. 

 

서블릿 동작 과정은 다음과 같다. 클라이언트가 웹 서버에 요청하면 웹 서버는 그 요청을 웹 애플리케이션 서버(WAS)에 위임한다. 그러면 WAS는 각 요청에 해당하는 서블릿을 실행하여 기능을 수행한 후 반환하여 클라이언트에 전송한다. 

 

클라이언트 <=> 웹서버 <=> 웹 애플리케이션 서버 <=> 서블릿

 

서블릿 컨테이너

서블릿의 실행은 톰캣과 같이 서블릿을 실행할 수 있는 환경에서 실행이 가능한데 이를 '서블릿 컨테이너'라고 한다. 서블릿 컨테이너는 자바와 다른 점이 있다.

 

1. 객체를 생성하고 호출하는 주체가 서블릿 컨테이너가 하게 된다. 

2. 서블릿 클래서에서 생성하는 객체의 관리 자체가 서블릿 컨테이너에 의해서 관리된다.

3. 자바 API와 더불어 서블릿 API도 같이 사용하여 코드를 작성하여야 한다. 

 

서블릿 API 계층 구조와 기능

서블릿은 계층 구조를 가진다. 서블릿 API는 ServletConfig 인터페이스를 구현해 제공하며 GenericServlet 추상 클래스가 이 두 인터페이스의 추상 메서드를 구현한다. 그리고 이 GenericServleet을 다시 HttpServlet이 상속받는다. 

 

 

GenericServlet은 일반적인 여러 통신 프로토콜에 대한 클라이언트/서버 프로그램에서 서블릿 기능을 구현하는 클래스이다. HttpServlet은 이를 상속받아 HTTP프로토콜을 사용하는 서블릿 기능을 구현하였다. 웹 브라우저의 요청을 처리하는 서블릿이 이 HttpServlet을 사용한다. 

 

HttpServlet은 doDelete, doGet, doHead, doPost, service 등의 메서드를 사용한다. 

 

서블릿의 생명주기 메서드

서블릿 생명주기 메서드란 서블릿 실행 단계마다 호출되어 기능을 수행하는 콜백 메서드를 말한다. 그 특징은 다음과 같다. 

init 서블릿 요청 시 맨 처음 한 번만 호출된다. 
서블릿 생성 시 초기화 작업을 주로 수행한다. 
doGet
doPost
서블릿 요청 시 매번 호출된다. 
실제로 클라이언트가 요청하는 작업을 수행한다. 
destroy 서블릿이 메모리에서 소멸될 때 호출된다.
서블릿의 마무리 작업을 주로 수행한다. 

 

init과 destory는 생략이 가능하지만 doGet이나 doPost는 반드시 구현해야 한다.