서블릿은 Server Side Applet의 약어로 동적 웹 페이지를 만들 때 사용되는 자바 기반의 웹 애플리케이션 프로그래밍 기술입니다. 웹 서버에서 얻은 HTTP 요청(request)을 받아 처리하고, 응답(response)을 생성해 웹 서버로 반환하는데 사용됩니다.
서블릿 기술은 다른 CGI(Common Gateway Interface) 스크립트 및 PHP(Hypertext Preprocessor)와 웹 서버 확장 프로그램과 유사합니다. 하지만 CGI의 낮은 성능, 낮은 확장성과 같은 한계를 해결하여 더 가용성이 좋습니다.
CGI(Common Gateway Interface)는 웹 서버에서 동적인 페이지를 보여 주기 위해 임의의 프로그램을 실행할 수 있도록 하는 기술 중 하나입니다.
주로 C나 C++과 같은 컴파일 언어로 만들어졌었으며, 아래와 같은 프로세스로 동작합니다.
현재는 요청이 하나 들어 올 때마다 새 프로세스가 하나씩 생성된다는 단점으로 널리 사용되지는 않는 추세입니다.
서블릿 API는 아래 두 개의 패키지에 구현되어있습니다.
서블릿 컨테이너는 구현되어 있는 servlet 클래스의 규칙에 맞게 서블릿을 담고 관리해주는 통합 객체 집합(Container)입니다. 대표적으로 아파치 톰캣(Apache Tomcat)이 있습니다.
서블릿 컨테이너는 아래와 같은 기능을 제공합니다.
서블릿과 웹서버가 손쉽게 통신할 수 있도록, 소켓을 만들고 listen, accept 등의 과정을 API로 제공하여 복잡한 과정을 생략할 수 있게 해줍니다.
서블릿 클래스를 로딩하여 인스턴스화하고, 초기화 메소드를 호출하고, 요청이 들어오면 적절한 서블릿 메소드를 호출합니다. 또한 수명이 다 된 서블릿을 적절하게 가비지 콜렉터를 호출하여 필요없는 자원 낭비를 막아줍니다.
Request 별 새로운 쓰레드 생성, 쓰레드 삭제, 쓰레드 풀 관리 등의 작업을 대신 해줍니다.
보안에 관련된 내용을 서블릿 또는 자바 클래스에 구현해 놓는 대신, 서블릿 컨테이너에서 XML 배포 서술자에다가 기록하여 보안관리 할 수 있습니다.
출처