Servlet은 어떤식으로 작동할까?

2025. 3. 5. 03:28·개발/servlet

서블릿 시스템의 동작 방식 

  1. 클라이언트 요청 (HTTP Request):
    • 브라우저(또는 다른 클라이언트)가 서버에 HTTP 요청을 보낸다. (예: 웹 페이지 요청, 데이터 전송 등)
  2. 웹 서버 (Web Server) / 웹 애플리케이션 서버 (WAS) / 서블릿 컨테이너:
    • 서버는 정적인 콘텐츠(HTML, CSS, 이미지 등) 요청을 직접 처리하고, 동적인 콘텐츠(JSP, Servlet) 요청은 WAS에 위임합니다. (WAS는 서블릿 컨테이너를 포함하고 있다.)
    • 서블릿 컨테이너는 요청 URL을 분석하여 어떤 서블릿이 처리해야 할지 결정. (web.xml 또는 어노테이션 기반 매핑 정보 사용)
  3. 스레드 생성 (Thread Creation):
    • 서블릿 컨테이너는 각 요청을 처리하기 위해 스레드 풀(thread pool)에서 스레드를 할당하거나, 새로운 스레드를 생성.
    • 스레드를 사용하면 여러 요청을 동시에 처리할 수 있어, 서버의 응답성을 높일 수 있다.
  4. 서블릿 객체 생성 또는 재사용 (Servlet Object Creation or Reuse):
    • 최초 요청: 해당 서블릿에 대한 첫 번째 요청인 경우, 서블릿 컨테이너는 서블릿 클래스의 인스턴스(객체)를 생성하고, init() 메서드를 호출하여 초기화한다.
    • 이후 요청: 이미 생성된 서블릿 객체가 있으면, 해당 객체를 재사용한다. (일반적으로 서블릿 객체는 싱글톤 패턴으로 관리됨.)
      • 싱글톤 패턴을 사용하므로, 동시성 문제에 주의해야함.
  5. HttpServletRequest, HttpServletResponse 객체 생성:
    • 서블릿 컨테이너는 각 요청에 대해 HttpServletRequest 객체와 HttpServletResponse 객체를 생성.
    • HttpServletRequest: 클라이언트의 요청 정보를 담고 있다. (헤더, 파라미터, 쿠키, 세션 등)
    • HttpServletResponse: 클라이언트에 대한 응답을 생성하는 데 사용된다. (헤더 설정, 상태 코드 설정, 응답 본문 출력 등)
  6. 서블릿의 service() 메서드 호출 (또는 doGet(), doPost() 등):
    • 서블릿 컨테이너는 생성된(또는 재사용된) 서블릿 객체의 service() 메서드를 호출하고, HttpServletRequest 객체와 HttpServletResponse 객체를 인자로 전달.
    • service() 메서드는 요청 메서드(GET, POST 등)에 따라 doGet(), doPost(), doPut(), doDelete() 등의 적절한 메서드를 호출.
      • HttpServlet을 상속받아 구현한 서블릿은 service 메소드를 재정의하기보다 doGet, doPost를 재정의.
  7. 요청 처리 및 응답 생성:
    • doGet(), doPost() 등의 메서드 내에서 개발자가 작성한 비즈니스 로직이 실행됨.
    • HttpServletRequest 객체를 통해 요청 정보를 읽어 들이고, HttpServletResponse 객체를 사용하여 응답을 생성. (HTML, JSON, XML 등)
  8. 응답 반환:
    • 서블릿 컨테이너는 HttpServletResponse 객체에 설정된 내용(상태 코드, 헤더, 응답 본문)을 기반으로 HTTP 응답 메시지를 생성하여 클라이언트에 반환.
  9. 스레드 반환 (Thread Return):
    • 요청 처리가 완료되면, 사용된 스레드는 스레드 풀에 반환됨.

 

저작자표시 비영리 변경금지 (새창열림)

'개발 > servlet' 카테고리의 다른 글

HttpSession 과 Cookie 인터페이스 정리  (0) 2025.03.05
ServletConfig 인터페이스 정리  (0) 2025.03.05
ServletContext 인터페이스 정리  (0) 2025.03.05
Servlet RequestDispatcher 정리  (0) 2025.03.05
Servlet Request 객체와 Response의 주요 메서드  (0) 2025.03.05
'개발/servlet' 카테고리의 다른 글
  • ServletConfig 인터페이스 정리
  • ServletContext 인터페이스 정리
  • Servlet RequestDispatcher 정리
  • Servlet Request 객체와 Response의 주요 메서드
함수형 인간
함수형 인간
잘 까먹는 개발자의 두뇌 확장 장치
  • 함수형 인간
    개발 기록 노트
    함수형 인간
  • 글쓰기 관리
  • 전체
    오늘
    어제
    • 글 목록 (84)
      • 기타 (1)
      • 개발 (82)
        • Java (6)
        • Javascript (1)
        • Spring (20)
        • jQuery (0)
        • Git (0)
        • servlet (11)
        • JSP (6)
        • HTML (0)
        • CSS (10)
        • SQL (9)
        • JSTL (3)
        • Mybatis (4)
        • Design Patterns (0)
        • HTTP (2)
        • Devtools (0)
        • IntelliJ (5)
        • JDBC (1)
        • Lombok (3)
        • Logging (1)
      • 책 리뷰 (0)
  • hELLO· Designed By정상우.v4.10.3
함수형 인간
Servlet은 어떤식으로 작동할까?
상단으로

티스토리툴바