흰 스타렉스에서 내가 내리지

서블릿 본문

Spring

서블릿

주씨. 2023. 12. 28. 22:48
728x90

Servlet(서블릿)은 자바 언어를 기반으로 하는 웹 애플리케이션 개발을 위한 서버 측 프로그래밍 기술 중 하나입니다. 
Servlet은 클라이언트의 요청에 동적으로 반응하고, 그 결과를 생성하여 다시 클라이언트에게 반환하는 역할을 합니다. 

주로 웹 애플리케이션 서버에서 실행되며, Java EE(Enterprise Edition)와 Jakarta EE(이전의 Java EE)에서 사용됩니다.

Servlet의 주요 특징과 개념은 다음과 같습니다:

1. 라이프사이클(Lifecycle): Servlet은 라이프사이클을 가지고 있습니다. 초기화, 서비스 처리, 소멸 등의 단계로 나뉩니다. 이 라이프사이클을 통해 Servlet은 특정 이벤트에 대한 처리를 수행할 수 있습니다.

2. HTTP 프로토콜 지원: 주로 HTTP 프로토콜을 통해 웹 브라우저와 통신합니다. HTTP 요청을 받아 처리하고, 그에 대한 응답을 생성하여 클라이언트에게 전송합니다.

3. 자바 클래스로 구현: Servlet은 자바 언어로 작성된 클래스입니다. Java Servlet API를 사용하여 Servlet 클래스를 작성하고, 웹 애플리케이션의 WEB-INF 디렉토리에 배치합니다.

4. 웹 애플리케이션 서버에서 실행: Servlet은 웹 애플리케이션 서버(예: Apache Tomcat, Jetty)에서 동작합니다. 웹 애플리케이션 서버는 클라이언트의 요청을 받아 Servlet을 호출하고, Servlet은 그에 따른 동적인 콘텐츠를 생성합니다.

5. 멀티스레드 지원: Servlet 컨테이너는 여러 클라이언트의 요청을 동시에 처리하기 위해 멀티스레드를 사용합니다. 따라서 개발자는 스레드 동기화에 주의해야 합니다.

6. Servlet 컨테이너: Servlet은 자체로 실행되는 것이 아니라 Servlet 컨테이너(웹 애플리케이션 서버) 내에서 실행됩니다. Servlet 컨테이너는 Servlet의 라이프사이클을 관리하고, 요청을 분배하며, 여러 기능을 제공합니다.

간단한 Servlet의 예제 코드는 다음과 같습니다:

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("/HelloServlet")
public class HelloServlet extends HttpServlet {
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        response.setContentType("text/html");
        response.getWriter().println("<html><body><h2>Hello, Servlet!</h2></body></html>");
    }
}

- 간단한 "Hello, Servlet!" 메시지를 웹 브라우저에 반환하는 Servlet을 보여준다. 

 

 

 

# 서블릿 컨테이너 동작 방식

- 웹 애플리케이션 서버가 Client로부터 request를 받아 Servlet을 호출. Servlet은 그에 따라 컨텐츠를 생성하고 웹 애플리케이션에 응답.