카테고리 없음

[Java] 서블릿(Servlet) 이란?

장일규 2025. 2. 26. 22:11

 

이번에는 Java 웹 개발에서 빠질 수 없는 Servlet(서블릿)에 대해 정리해보려고 한다.

현재 실무에서는 Spring또는 Boot를 많이 쓰고 있지만, 그 근본에는 Servlet이 자리를 잡고 있다.

 

1.  서블릿이란?

Servlet은 클라이언트(브라우저)에서 보낸 요청을 받아서 처리하고, 적절한 응답을 만들어 반환하는 Java 기반의 서버 프로그램이다.

 

웹 애플리케이션에서 사용자가 어떤 버튼을 클릭하거나 또는 특정 URL로 요청을 보내면 요청을 받아서 처리해주는 것이 Servlet에 역할이다.

 

 

2. 서블릿 컨테이너란?

Servlet 컨테이너는 서블릿의 생명주기를 관리하고, HTTP 요청을 처리해주는 역할을 한다.

출처 : https://sergiomartinrubio.com/articles/get-started-with-java-servlets/

 

3. 서블릿의 동작 원리 

그렇다면 Servlet이 요청을 받아서 처리하는 과정은 어떻게 진행이 될까?

1️⃣ 사용자가 http://localhost:8080/login 으로 접속

2️⃣ 요청이 웹 서버(Apache, Nginx 등)로 전달

3️⃣ 웹 서버는 이 요청을 Servlet 컨테이너(Tomcat)로 넘김

4️⃣ Servlet 컨테이너는 적절한 Servlet을 찾아서 실행

5️⃣ Servlet이 요청을 처리하고 응답을 생성 (HTML, JSON 등)

6️⃣ 생성된 응답을 클라이언트에게 반환

 

4. 자바 어플리케이션에서 서블릿의 생명주기 (Lifecycle)

서블릿은 한 번 만들어지면 계속 유지되다가, 더 이상 필요 없을 때 제거된다.

단계 설명
1.객체 생성 최초 요청 시, Servlet 객체 생성 (new Servlet())
2.초기화 init() 메서드 실행 (한 번만 실행이 됨)
3.요청 처리 service() 메서드가 클라이언트 요청을 처리
4. 소멸 destory() 메서드 실행 후 메모리에서 해제

 

@WebServlet("/login")
public class LifecycleServlet extends HttpServlet {
    @Override
    //1.최초 요청 시 init() 실행
    public void init() throws ServletException {
        System.out.println("🔹 init() 호출 - 서블릿 초기화");
    }

    @Override
    // 2.클라이언트 요청이 올 때마다 service() 실행
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        response.getWriter().println("🔹 service() 호출 - 요청 처리 중");
    }

    @Override
    // 3.서버가 종료되거나, 더 이상 사용되지 않을 때 destroy() 실행
    public void destroy() {
        System.out.println("🔹 destroy() 호출 - 서블릿 소멸");
    }
}