Post

서블릿의 개요

서블릿의 개요

서블릿의 개요

서블릿은 Java로 작성된 서버 측 프로그램으로, 웹 애플리케이션에서 HTTP 요청을 처리하고 동적인 콘텐츠를 생성해 클라이언트(브라우저)에 응답을 보내는 역할을 합니다. 주로 웹 컨테이너(예: Tomcat)에서 실행되며, HTML, JSON 등 다양한 형식을 생성할 수 있어요. 서블릿은 멀티스레딩을 지원해 여러 요청을 동시에 처리하며, 데이터베이스와 연동해 동적 웹 페이지를 제공하는 데 사용됩니다.

javax.servlet.http.HttpServletRequest 와 javax.servlet.http.HttpServletResponse 객체는 Java Servlet에서 HTTP 요청과 응답을 다룰 때 사용됩니다. 서블릿(Servlet)을 만들면 doGet()이나 doPost() 메서드 안에서 이 객체들을 자동으로 전달받습니다.

예제 코드와 함께 설명드릴게요:


✅ 예제: 서블릿에서 

HttpServletRequest

  

HttpServletResponse

 사용

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

@WebServlet("/hello") // URL 매핑
public class HelloServlet extends HttpServlet {

    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
        
        // 요청에서 파라미터 가져오기
        String name = request.getParameter("name");

        // 응답 설정
        response.setContentType("text/html; charset=UTF-8");
        
        // 응답에 출력
        response.getWriter().println("<html><body>");
        response.getWriter().println("<h1>Hello, " + name + "!</h1>");
        response.getWriter().println("</body></html>");
    }
}

🧠 주요 개념

항목설명
HttpServletRequest request클라이언트가 보낸 요청 정보를 담고 있음 (파라미터, 헤더, 쿠키 등)
HttpServletResponse response서버가 클라이언트에게 보낼 응답 내용을 설정할 때 사용 (헤더 설정, 데이터 출력 등)

📌 파라미터 예시

사용자가 브라우저에서 다음 URL로 접근한다고 가정:

1
http://localhost:8080/hello?name=Heddo

그러면 request.getParameter(“name”) 은 “Heddo” 값을 반환


좋은 질문이에요!

서블릿(Servlet)은 Java에서 웹 애플리케이션을 만들 때 사용되는 컴포넌트로, 서버에서 실행되는 작은 Java 프로그램입니다. 서블릿은 웹 요청을 처리하고 웹 응답을 생성합니다.

서블릿의 생명 주기(Lifecycle)는 크게 다음의 3단계 메서드로 관리됩니다:


🔄 서블릿 생명주기 (Servlet Lifecycle)

  1. init()

    ###  메서드

    • 서블릿이 처음 생성될 때 단 한 번만 호출됨.

    • 서블릿 초기화 작업(예: DB 연결, 설정 로딩 등)에 사용됨.

1
2
3
4
@Override
public void init() throws ServletException {
    System.out.println("서블릿 초기화됨");
}
  1. 🧠 예: 서버가 시작되거나 처음 요청이 올 때 서블릿이 메모리에 로딩되고, init()이 실행됨.

  1. service()

    ###  메서드

    • 클라이언트로부터 요청이 들어올 때마다 호출됨.

    • 이 메서드는 요청 방식(GET, POST 등)에 따라 자동으로 doGet(), doPost() 등으로 분기됨.

1
2
3
4
5
6
@Override
protected void service(HttpServletRequest req, HttpServletResponse resp)
    throws ServletException, IOException {
    System.out.println("요청 처리 중...");
    super.service(req, resp); // 이걸 호출하면 doGet/doPost로 넘어감
}
  1. 보통 우리가 작성하는 doGet() 또는 doPost()는 service() 내부에서 호출됩니다.

  1. destroy()

    ###  메서드

    • 서블릿이 메모리에서 내려갈 때 호출됨 (예: 서버가 꺼질 때).

    • 리소스를 해제할 때 사용 (예: DB 연결 닫기).

1
2
3
4
@Override
public void destroy() {
    System.out.println("서블릿 종료됨");
}

🔁 전체 흐름 요약

1
2
3
4
5
6
7
8
9
(서버 시작 또는 첫 요청)
          ↓
      init()       ←  딱 한 번
          ↓
   service() 호출  ←  요청마다 반복
          ↓
(doGet(), doPost(), 등)
          ↓
     destroy()      ←  서버 종료 시

💡 추가 팁

  • 이 모든 메서드는 HttpServlet 클래스에서 제공되고, 우리가 상속받아 오버라이드해서 사용합니다.

  • 보통 실무에서는 init()은 초기 설정, doGet()/doPost()에 비즈니스 로직, destroy()는 정리 작업에 사용합니다.

서블릿 초기화 -> 초기에 한번만 실행 service()/doGet()/doPost() -> 스레드를 통해 동시에 실행됨 destroy() -> 종료할 때 한번만 실행

This post is licensed under CC BY 4.0 by the author.