Servlet(서블릿) 이란?
개념
서블릿(Servlet)은 자바 언어로 작성된 웹 애플리케이션의 서버 측 컴포넌트입니다.
주로 동적인 웹 페이지를 생성하고 사용자 요청에 대한 응답을 처리하는 데 사용됩니다.
서블릿은 Java Servlet API를 구현하는 클래스로 구성되어 있으며, 서버 측에서 실행되어 웹 서버와 통신합니다.
특징
- 동적인 콘텐츠 생성: 서블릿은 클라이언트의 요청에 동적으로 응답을 생성할 수 있습니다.
예를 들어, 사용자가 폼을 제출하거나 특정 페이지를 요청할 때 데이터베이스에서 정보를 검색하거나
계산을 수행하여 동적으로 페이지를 생성할 수 있습니다. - 플랫폼 독립성: 자바로 작성되었기 때문에 서블릿은 플랫폼 독립적입니다.
이는 서블릿이 다양한 운영 체제 및 하드웨어에서 실행될 수 있음을 의미합니다. - 재사용성과 확장성: 서블릿은 객체 지향적인 프로그래밍의 개념을 활용하여 모듈화되어 있으므로 재사용이 용이합니다.
또한, 서블릿은 Java EE(Enterprise Edition) 기술 스택의 일부로서 다른 기술과 통합하여 확장할 수 있습니다. - 스레드 안전성: 서블릿 컨테이너는 여러 클라이언트 요청을 동시에 처리하기 위해 멀티스레드 모델을 사용합니다.
따라서 서블릿을 개발할 때 스레드 안전성에 주의해야 합니다. - 웹 애플리케이션 개발에 특화된 생명주기: 서블릿은 웹 애플리케이션의 생명주기에 따라 초기화, 서비스, 소멸 등의 단계를 가집니다. 이를 통해 서블릿은 애플리케이션의 상태를 관리하고 필요한 작업을 수행할 수 있습니다.
서블릿은 주로 자바 웹 애플리케이션 개발에서 사용되며, 웹 서버(예: Apache Tomcat, Jetty)와 같은 서블릿 컨테이너에서 실행됩니다. 클라이언트가 웹 페이지를 요청하면 서블릿 컨테이너가 해당 요청을 적절한 서블릿에 전달하고, 서블릿은 요청을 처리하고 응답을 생성하여 다시 클라이언트에게 반환합니다.
이미지로 예를 들어보겠습니다. ( 악필 )
1. 사용자 (Client)가 URL을 입력하면 HTTP Request(Req)가 Servlet Container로 전송합니다.
2. 요청을 전송받은 ServletContainer는 HttpServletRequest, HttpServletResponse 객체를 생성합니다.
3. web.xml을 기반으로 사용자가 요청한 URL이 어느 서블릿에 대한 요청인지 찾습니다.
4. 해당 서블릿에서 service메소드를 호출한 후 클라이언트의 GEt, POST여부에 따라 doGet()또는 doPost()를 호출합니다.
5. doGet() or doPost() 메소드는 동적 페이지를 생성한 후 HttpServletResponse객체에 응답을 보냅니다.
6. 응답이 끝나면 HttpServletRequest, HttpServletResponse 두 객체를 소멸시킵니다.
Servlet Container(서블릿 컨테이너) 이란?
개념
서블릿 관리: 클라이언트의 요청에 따라 서블릿을 호출하고 실행하여 동적인 콘텐츠를 생성합니다.
요청 및 응답 처리: 클라이언트의 HTTP 요청을 받아들이고, 서블릿을 통해 요청을 처리하고 클라이언트에게 응답합니다.
스레드 관리: 멀티스레드를 사용하여 여러 클라이언트 요청을 동시에 처리합니다.
보안 및 자원 관리: 보안 기능을 제공하고, 서블릿이 사용하는 자원을 효율적으로 관리합니다.
특징
- 동적 콘텐츠 생성: 서블릿은 동적인 웹 페이지를 생성하고 클라이언트의 요청에 따라 콘텐츠를 동적으로 제공합니다.
- 플랫폼 독립성: 자바로 작성되었기 때문에 플랫폼 독립적이며, 여러 운영 체제 및 하드웨어에서 실행될 수 있습니다.
- 재사용성과 확장성: 객체 지향적인 설계를 통해 모듈화되어 있어 재사용이 용이하고, 다른 기술과 통합하여 확장할 수 있습니다.
- 스레드 안전성: 멀티스레드 환경에서 안전하게 동작하여 여러 클라이언트 요청을 동시에 처리할 수 있습니다.
웹 애플리케이션 개발에 특화된 생명주기: 초기화, 서비스, 소멸 등의 생명주기를 가지고 있어 애플리케이션의 상태를 관리하고 필요한 작업을 수행할 수 있습니다.
이러한 특징들은 서블릿 컨테이너가 자바 웹 애플리케이션 개발에서 중요한 역할을 수행하며, 웹 서버와의 통신을 통해 동적인
웹 애플리케이션을 구현할 수 있도록 합니다.
'CS' 카테고리의 다른 글
Git) GitHub 플랜 비교 및 CI/CD 도입 가이드 (1) | 2025.01.08 |
---|---|
Vercle로 Tag Push 배포 자동화 (2) | 2024.03.13 |
Tomcat Server 외부 접속 허용 방법 (1) | 2024.02.26 |
CORS( Cross-origin Resourcs Sharing ) (2) | 2024.02.26 |
HTTPS 인증서 만료되었을 경우 (1) | 2024.02.26 |