서블릿이란?
서블릿은 동적 웹 페이지를 만들기 위한 Java 기반의 웹 프로그래밍 기술이다. 동적 컨테츠를 응답하기 위한 Java 프로그램이라고 이해하면 된다. 클라이언트의 요청을 처리하고 그에 대한 응답을 생성하여 다시 클라이언트에게 전송하는 과정을 도와준다. 이 말이 어떤 의미인지 이해하기 위해 서블릿이 없을 때, 웹 애플리케이션이 브라우저의 요청을 수행하도록 개발자가 어떻게 해야 하는지 생각해 보자.
만약 서블릿을 사용하지 않는다면 개발자는 요청 메세지를 컴퓨터가 해석할 수 있도록 파싱 하고, 응답메세지를 생성하는 코드를 짜야한다. HTTP 메세지는 그저 문자열이기 때문이다. 또한, 메세지를 주고받는 과정에서 TCP/IP의 연결 및 종료 작업을 하는 코드도 짜야한다. 하나의 비즈니스 로직을 작성할 때마다 HTTP 요청과 응답에 관한 코드를 작성해야 하는 것이다. 그런데 서블릿은 이러한 반복 작업을 대신 수행하여 개발자는 비즈니스 로직에 보다 집중할 수 있다.

서블릿의 동작 과정

클라이언트로부터 HTTP 요청이 들어오면 서블릿 컨테이너는 요청 URL과 매핑된 서블릿 객체를 찾거나 생성하여 service() 메서드를 호출한다. 이 때 서블릿 컨테이너는 HttpServletRequest 객체와 HttpServletResponse 객체를 생성하여 매개변수로 전달한다. HTTP 요청에 관한 객체가 HttpServletRequest이고, 응답에 관한 객체가 HttpServletResponse이다. 개발자는 HttpServletRequest 객체를 통해 HTTP 요청 메세지에 담긴 정보를 편리하게 꺼내서 사용하고, 그 결과를 HttpServletResponse 객체에 저장한다. 그리고 서블릿 컨테이너는 HttpServletResponse 객체에 저장된 내용을 바탕으로 HTTP 응답 메세지를 생성한다.
@WebServlet(name = "helloServlet", urlPattterns = "/hello")
public class HelloServlet extends HttpServlet {
@Overrride
protected void service(HttpServletRequest request, HttpServletResponse response) {
// 비즈니스 로직
}
}
동작 과정을 정리하면 다음과 같다.
- 클라이언트 요청
- 웹 브라우저와 같은 클라이언트가 웹 애플리케이션의 특정 URL에 요청을 보낸다.
- 웹 서버의 요청 수신
- 웹 서버가 클라이언트의 요청을 받고, 서블릿이 필요한 요청이면 요청을 서블릿 컨테이너에 위임한다.
- 서블릿 컨테이너 호출
- 서블릿 컨테이너는 요청 URL과 매핑된 서블릿 인스턴스를 생성하거나 재사용한다.
- 해당 서블릿의 service() 메서드를 호출하여 클라이언트의 요청을 처리한다.
- 이때, 서블릿 컨테이너는 HttpRequestServlet과 HttpResponseServlet 객체를 매개변수로 전달한다.
- 개발자는 HttpRequestServlet으로부터 HTTP 요청 메세지에 대한 정보를 가져올 수 있다.
- 개발자는 HttpResponseServlet에 HTTP 응답 메세지에 담을 정보를 저장할 수 있다.
- 서블릿 컨테이너의 응답 전송
- 서블릿 컨테이너는 HttpResponseServlet를 바탕으로 HTTP 응답 메세지를 구성하여 브라우저로 전송한다.
'Java' 카테고리의 다른 글
| [Java] 서블릿의 응답 처리 - HttpResponseServlet (0) | 2023.08.15 |
|---|---|
| [Java] 서블릿의 요청 처리 - HttpRequestServlet (0) | 2023.08.14 |
| [Java] 상속과 참조변수 형변환을 활용한 다형성 구현 (0) | 2023.04.29 |
| [Java] 오버로딩 vs 오버라이딩 (0) | 2023.04.21 |
| [Java] 메서드의 기본형 매개변수와 참조형 매개변수 (0) | 2023.04.13 |