서블릿 이란?

- 서버에서 웹 페이지 등을 동적으로 생성하거나 데이터 처리를 수행하기 위해 자바(Java)로 작성된 프로그램

- 자바 서블릿은 서버 측 기능을 확장시킨 자바 프로그램으로, 자바EE(JavaEE, Java Platform Enterprise Edition)의 한 기능이다.

- 서블릿은 javax.servlet.GenericServlet클래스를 상속받아 작성하거나, HTTP protocol 서비스를 지원하는 javax.servlet.http.HttpServlet 클래스를 상속받아 작성한다.

- 서블릿은 Servlet Container에 의해서 실행되고, 관리된다.

- 서블릿은 자바 코드 안에 HTML을 포함하고 있어서 그 효율성이 떨어진다. HTML 변경 시 서블릿을 재 컴파일해서 배포해야 한다.

 

Servlet Container

- HTTP 요청을 받아서 Servlet을 실행시키고, 그 결과를 사용자 브라우저에게 전달해주는 기능을 제공한다.

- Servlet을 실행하고 생명주기를 관리하는 역할을 한다.

- 멀티 스레딩을 지원하여 클라이언트의 다중 요청을 스레드를 이용하여 처리한다. 서블릿 컨테이너는 해당 서블릿의 요청이 들어오면 스레드를 생성해서 작업을 수행한다.

 

Servlet의 Life Cycle

- Servlet은 init(), service(), destroy()의 세 개의 메소드에 의한 생명주기를 갖는다.

- 클라이언트가 Servlet을 요청하는 경우 다음의 단계를 실행한다.

1) 해당 서블릿의 인스턴스가 존재하지 않는 경우

(1) Servlet 클래스를 로드하여 서블릿 클래스의 인스턴스를 생성한다.

(2) init() 메소드를 호출하여 서블릿 인스턴스를 초기화한다.

(3) 해당 서블릿의 인스턴스가 존재하는 경우에는 (1), (2)번의 과정은 실행하지 않는다.

2) request와 response 객체를 인수로 전달하여 service() 메소드를 호출, 클라이언트의 요청을 처리하여 처리 결과를 전송한다.

- service() 메소드는 클라이언트의 요청이 있을 때마다 반복적으로 호출하여 클라이언트 요청을 처리한다.

- 클라이언트가 서블릿을 요청하면 컨테이너는 스레드를 생성하여 병행적으로 service() 메소드를 호출된다.

- 서블릿을 javax.servlet.HttpServlet 클래스를 상속 받아 작성했다면 service() 메소드는 클라이언트의 요청방식에 따라 GET 방식이면 doGet()메소드를, POST 방식이면 doPost() 를 호출한다.

3) 서블릿을 제거해야 하는 경우 컨테이너는 서블릿의 destroy()메소드를 실행하고, 서블릿을 종료한다. 일반적으로 데이터베이스 연결 해제, 백그라운드 스레드 중지 등 사용한 자원을 종료한다.

+ Recent posts