게으른 개발자의 끄적거림

Servlet(서블릿)이란?

끄적잉 2024. 1. 25. 22:21
반응형

서블릿(Servlet)은 자바 언어를 기반으로 하는 서버 측 프로그래밍을 위한 표준 확장 API로, 동적 웹 페이지를 생성하고 웹 애플리케이션의 동작을 제어하는 자바 클래스입니다. 서블릿은 주로 웹 애플리케이션 서버에서 실행되며, 클라이언트의 요청에 따라 동적으로 응답을 생성하고 전송합니다. 이러한 특징으로 웹 애플리케이션의 구조를 유연하게 만들어주며, 사용자와 상호작용하며 동적인 콘텐츠를 생성하는 데 적합합니다.

 


1. **서블릿의 특징:**
   - **플랫폼 독립성:** 자바 언어로 작성되어 있어서 어떤 플랫폼에서도 실행 가능합니다.
   - **확장성:** 자바 언어의 객체지향 특성을 활용하여 확장이 용이합니다.
   - **재사용성:** 모듈화된 구조로 구현되어 있어 다양한 웹 애플리케이션에서 재사용이 가능합니다.
   - **보안:** 자바의 보안 기능을 활용하여 안전한 웹 애플리케이션을 구현할 수 있습니다.

 


2. **서블릿의 생명주기(Life Cycle):**
   - **초기화(Initialization):** 서블릿 인스턴스가 생성될 때 한 번 호출되며, 초기화 작업을 수행합니다.
   - **서비스(Service):** 각 요청마다 호출되는 메서드로, 클라이언트의 요청을 처리하고 응답을 생성합니다.
   - **소멸(Destruction):** 서블릿이 더 이상 필요하지 않을 때 호출되며, 리소스 정리 등의 마무리 작업을 수행합니다.

 


3. **HTTP 서블릿의 동작 원리:**
   - 클라이언트가 웹 브라우저를 통해 서블릿에 HTTP 요청을 전송합니다.
   - 서블릿 컨테이너는 해당 서블릿을 찾아서 인스턴스화하고 초기화한 후, 서비스 메서드를 호출하여 요청을 처리합니다.
   - 서블릿은 동적으로 HTML 문서나 다른 형태의 응답을 생성하고, 이를 HTTP 응답으로 클라이언트에게 전송합니다.

 

반응형


4. **서블릿 매핑(Servlet Mapping):**
   - 웹 애플리케이션에서 어떤 URL이 어떤 서블릿과 연결되는지를 정의하는 매핑 정보를 설정합니다.
   - 일반적으로 `web.xml` 파일이나 애너테이션을 통해 매핑 정보를 설정할 수 있습니다.

 


5. **HTTP 요청과 응답 처리:**
   - **HttpServletRequest:** 클라이언트의 요청에 관련된 정보를 제공하는 객체로, 파라미터, 헤더 등의 정보를 읽을 수 있습니다.
   - **HttpServletResponse:** 서블릿이 생성한 응답을 클라이언트에게 전송하는 데 사용되는 객체로, 헤더 설정 및 출력 스트림을 제공합니다.

 


6. **세션 관리:**
   - 서블릿은 세션을 활용하여 클라이언트와 서버 간의 상태를 유지할 수 있습니다.
   - `HttpSession` 객체를 사용하여 세션 데이터를 저장하고 관리할 수 있습니다.

 


7. **쓰레드 안전성(Thread Safety):**
   - 기본적으로 서블릿 컨테이너는 각 요청에 대해 새로운 스레드를 생성하여 서블릿을 실행합니다.
   - 개발자가 명시적으로 쓰레드 안전한 코드를 작성하지 않더라도, 서블릿은 보통 쓰레드 안전성을 가집니다.

 


8. **서블릿 필터(Filter):**
   - 요청이나 응답에 대해 서블릿에 도달하기 전후에 실행되는 코드를 작성할 수 있는 서블릿 필터를 사용하여 공통 작업을 수행할 수 있습니다.

 


9. **애너테이션 기반 서블릿 설정:**
   - 자바 EE 5.0 이상에서는 애너테이션을 사용하여 서블릿을 설정할 수 있어서 `web.xml`에 대한 의존성을 줄일 수 있습니다.

 


10. **서블릿 컨테이너:**
    - 서블릿을 관리하고 실행하는 환경으로, 대표적으로 Apache Tomcat, Jetty, 등이 있습니다.

 

 


이러한 특징과 구성 요소를 통해 서블릿은 동적인 웹 애플리케이션을 구현하는 데 강력하고 유연한 도구로 사용됩니다. 개발자는 클라이언트 요청에 대한 응답을 생성하는 로직을 자바 코드로 작성하여 서블릿을 개발하고, 서블릿 컨테이너가 이를 실행하여 동적인 웹 페이지를 생성하게 됩니다.

반응형