728x90

서블릿???

자바 웹 애플리케이션에서 클라이언트의 요청을 처리하고 응답을 생성하는 자바 클래스이며 Java Servelet API를 구현합니다. 또한 자바 웹 애플리케이션의 핵심 요소로, HTTP 요청을 처리하고 동적인 컨텐츠를 생성하는 데 사용하고 서블릿을 활용해서 웹 애프리케이션을 구축하면 동적이고 유연한 기능을 구현 가능 합니다.

서블릿 특징

  • 자바로 작성되어 JVM 위에서 실행되므로 특정 플랫폼에 종속되지 않고 여러 운영체제에서 동작할 수 있습니다.
  • 웹 애플리케이션 클라이언트 요청을 처리하고, 동적인 HTML페이지 만들 때나 RESTful API 구현에 사용합니다.
  • 서블릿 컨테이너에 의해 관리되며, 초기화, 요청 처리, 소멸과 같은 생명 주기를 가집니다.
  • 서블릿도 객체 지향이며 재사용 가능한 컴포넌트로 개발 가능하며 서블릿이나 JSP와 함께 조합하여 기능이 확장 가능 합니다.

서블릿 컨테이너???

서블릿의 생명주기를 관리하고, 서블릿이 웹 애플리케이션에서 실행되도록 도와주는 환경을 제공하는 소프트웨어입니다.

쉽게 생각해 봤을때는 서블릿 여러 개를 관리해 준다고 볼 수 있습니다. 대표적으로 서블릿 컨테이너로는 Tomcat, Jetty, IBM 등이 있습니다.

서블릿 컨테이너는 요청마다 새로운 서블릿 인스턴스를 생성하는 것이 아니라, 각 서블릿에 대해 단일 인스턴스를 유지합니다. 예를 들어보면 로그인, 로그아웃, 글 읽기, 글 쓰기와 같은 다양한 요청이 있을 때, 서블릿 컨테이너는 각 서블릿에 대해 단 하나의 인스턴스만을 생성하며 이를 재사용하게 됩니다. 클라이언트로부터 요청이 오면, 서블릿 컨테이너는 해당 요청을 처리할 적절한 서블릿을 찾습니다. 이후에는 각 요청마다 별도의 쓰레드를 생성하여 해당 서블릿의 `service()` 메서드를 호출합니다. 이때, 각 쓰레드는 요청을 처리하기 위해 생성된 Request와 Response 객체를 사용하게 됩니다.
서블릿은 다중 쓰레드 환경에서 실행될 수 있도록 설계되어 있습니다. 이는 한 서블릿 인스턴스가 여러 쓰레드에서 동시에 실행될 수 있다는 것을 의미합니다. 따라서, 서블릿은 여러 요청을 병렬로 처리할 수 있으며, 이것이 웹 서버가 동시에 여러 사용자의 요청을 처리하는 이유 중 하나입니다.
그러나 이러한 다중 쓰레드 환경에서는 주의해야 할 점이 있습니다. 서블릿이 상태를 가지게 되면, 즉 인스턴스 변수나 정적 변수를 사용하면 여러 쓰레드에서 공유되는 상태가 됩니다. 이는 여러 쓰레드 간의 동시성 문제를 야기할 수 있으므로, Thread-Safe 한 방식으로 상태를 관리해야 합니다. 일반적으로 서블릿은 상태를 가지지 않고 요청마다 새로운 지역 변수를 사용하여 처리합니다.

728x90

'Spring(Boot & FrameWork)' 카테고리의 다른 글

RequestParam  (1) 2023.11.27
Thymeleaf  (0) 2023.11.16
지연 로딩 & 즉시 로딩  (0) 2023.11.15