🧩 Servlet 이란

정의

Servlet은 Java 기반 웹 애플리케이션에서 HTTP 요청을 받아 처리하고 응답을 만드는 서버 측 컴포넌트이다. 보통 서블릿 컨테이너 안에서 동작하며, 웹 요청 처리의 기본 단위가 된다.

  • 동적 웹페이지나 API 응답을 만들 때 사용한다.
  • 컨테이너가 서블릿의 생성과 호출 흐름을 관리한다.
  • HttpServlet을 상속해서 doGet(), doPost() 같은 메서드를 구현하는 경우가 많다.

⚙️ 동작 흐름

image

  1. 클라이언트가 요청을 보낸다.
  2. 서블릿 컨테이너가 요청을 받고 알맞은 서블릿을 찾는다.
  3. 필요하면 init()을 호출해 서블릿을 초기화한다.
  4. 요청마다 service()를 호출하고, HTTP 메서드에 따라 doGet(), doPost() 등으로 분기한다.
  5. 처리 결과를 응답으로 돌려준다.
  6. 종료 시점에는 destroy()를 호출한다.

🧪 Servlet Interface

package javax.servlet;

import java.io.IOException;

public interface Servlet {
    public void init(ServletConfig config) throws ServletException;

    public ServletConfig getServletConfig();

    public void service(ServletRequest req, ServletResponse res)
            throws ServletException, IOException;

    public String getServletInfo();

    public void destroy();
}

메서드 역할

init()은 서블릿 초기화 시 한 번 호출되고, service()는 요청마다 호출된다. destroy()는 서블릿이 종료될 때 한 번 호출된다.

✅ 특징

  • 요청을 받으면 동적으로 응답을 생성한다.
  • 서블릿 컨테이너 안에서 생명주기가 관리된다.
  • HTTP 메서드별 처리를 분리하기 쉽다.
  • MVC 구조에서 컨트롤러 역할로 활용할 수 있다.
  • 세션, 쿠키, 인증 같은 웹 기능과 함께 쓰기 좋다.

⚠️ 주의사항

  • service()를 직접 구현하기보다 보통 HttpServletdoGet(), doPost()를 오버라이드해서 사용한다.
  • 서블릿 객체는 요청마다 새로 만들어지지 않고, 보통 하나의 인스턴스를 여러 요청 스레드가 공유한다.
  • 멤버 변수를 잘못 사용하면 동시성 문제가 생길 수 있다.

📌 정리

  • Servlet은 Java 웹 애플리케이션의 기본 서버 컴포넌트다.
  • 서블릿 컨테이너가 생명주기와 요청 처리를 관리한다.
  • Spring MVC의 DispatcherServlet도 이런 서블릿 구조 위에서 동작한다.

연결문서

태그:

카테고리:

업데이트:

댓글남기기